资源简介
在网上找的大都是多字节的工程代码,传参以及返回参数中有中文都会乱码。现在VC工程几乎都是Unicode字符集,这个类已经完全解决了中文乱码问题,并且支持Get和Post请求,在VS2015下已经测试通过,注释详细,有使用示例。
代码片段和文件信息
/************************************************************************
使用示例(测试网址是自己写的WebService接口):
1. get
CString strUrl1;
strUrl1 = L“http://192.168.2.179:9999/WebService1.asmx“;
strUrl1 += L“/ShowStringParam?userName=老王&userAge=42“;
std::string strGetInfo1(““);
CWebCommand webCommand1;
int nRet1 = webCommand1.HttpGet(strUrl1 strGetInfo1);
2. post
CString strUrl2;
strUrl2 = L“http://192.168.2.179:9999/WebService1.asmx“;
strUrl2 += L“/ShowStringParam“;
std::string strGetInfo2;
CWebCommand webCommand2;
webCommand2.AddParam(_T(“userName“) _T(“老王“));
webCommand2.AddParam(_T(“userAge“) _T(“42“));
int nRet2 = webCommand2.HttpPost(strUrl2 strGetInfo2);
************************************************************************/
#include “stdafx.h“
#include “WebCommand.h“
#include
#pragma comment(lib “Ws2_32.lib“)
#include
#pragma comment(lib “comsuppw.lib“)
using namespace _com_util;
#define CONNECTON_TIMEOUT 4000 // 超时标准
#define BUFFER_SIZE (4 * 1024) // 接收数据buffer size
#define NORMAL_CONNECT INTERNET_FLAG_KEEP_CONNECTION
#define SECURE_CONNECT NORMAL_CONNECT | INTERNET_FLAG_SECURE
#define NORMAL_REQUEST INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE
#define SECURE_REQUEST NORMAL_REQUEST | INTERNET_FLAG_SECURE | INTERNET_FLAG_IGNORE_CERT_CN_INVALID
CWebCommand::CWebCommand(LPCTSTR strAgent) :
m_pConnection(NULL)
m_pFile(NULL)
m_strPostData(““)
{
m_pSession = new CInternetSession(strAgent);
}
CWebCommand::~CWebCommand()
{
Clear();
if (NULL != m_pSession)
{
m_pSession->Close();
delete m_pSession;
m_pSession = NULL;
}
}
int CWebCommand::HttpGet(CString strUrl string &strResponse)
{
return ExecuteGetRequest(strUrl strResponse);
}
int CWebCommand::HttpPost(CString strUrl string &strResponse)
{
return ExecutePostRequest(strUrl strResponse);
}
void CWebCommand::AddParam(CString strName CString strVaule)
{
m_strPostData = m_strPostData + strName + _T(“=“) + strVaule + _T(“&“);
}
void CWebCommand::Clear()
{
if (NULL != m_pFile)
{
m_pFile->Close();
delete m_pFile;
m_pFile = NULL;
}
if (NULL != m_pConnection)
{
m_pConnection->Close();
delete m_pConnection;
m_pConnection = NULL;
}
}
int CWebCommand::ExecuteGetRequest(CString strUrl string & strResponse)
{
try
{
// 1. 首先得设置个超时标准吧
m_pSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT CONNECTON_TIMEOUT);
// 2. request to the HTTP server
ConvertUnicodeToUtf8(strUrl); // before OpenUrl convert strUrl coding
m_pFile = (CHttpFile*)m_pSession->OpenURL(strUrl);
if (m_pFile)
{
char szChars[BUFFER_SIZE + 1] = { 0 }; // buffer
UINT nReaded = 0; // The number of bytes transferred to the buffer
while ((nReaded = m_pFile->Read((void *)szChars BUFFER_SIZE)) > 0)
{
szChars[nReaded] = ‘\0‘;
strResponse += szChars;
}
ConvertUtf8ToUnicode(strRespons
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-03-31 08:57 WebCommand\
文件 14248 2017-04-01 17:43 WebCommand\WebCommand.cpp
文件 2748 2017-04-01 17:43 WebCommand\WebCommand.h
相关资源
- gsoap wsdl SSL WSDL支持HTTPS SSL协议
- WebApi系列-通过HttpClient来调用WebApi接口
- GBK转unicode
- vcruntime140_1.zip
- HttpHelperV2.0 万能框架
- maven+springmvc+mybatis+ajax实现增删查改和
- 图像亮度调整源代码
- 高斯平滑源代码
- EVC中直接加载位图文件
- springMVC的增删改查
- spring+springmvc+Mybatis登陆的
- 在VisualC_中利用COM实现对Word的调用
- opengl下的贪吃蛇
- qualnet编译说明
- STM32F103VCT6+W5500 telnet功能实现
- unicode编码汉字库16*16点阵
- VC学生信息管理系统ODBC
- 尚硅谷Spring4、SpringMVC、MyBatis视频教程
- 手机音圈马达的结构报告跟动作原理
- VC+halcon,显示图片,缩放拖动
- 使用netty使用http协议开发文件服务器
- VC下获取硬盘信息支持IDESCSI
- springMVC空项目
- 基于des的加密解密系统
- 关于EVC入门的一些教程
- 基于MVC的Web应用程序-个人所得税计算
- 运行时缺少MSVCP60D.DLL?
- PCL-1.9.1-AllInOne-msvc2017-win64 百度云链接
- 一个简单的Avi文件播放器VC源代码
- 基于Qt的多线程工具
评论
共有 条评论