C++ http请求

std::string CHttpTool::HttpRequest(char * lpHostName,short sPort,char * lpUrl,char * lpMethod,char * lpPostData,int nPostDataLen)  
{  
HINTERNET hInternet,hConnect,hRequest;  


BOOL bRet;  


std::string strResponse;  


hInternet = (HINSTANCE)InternetOpen("User-Agent",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);  
if(!hInternet)  
goto Ret0;  


hConnect = (HINSTANCE)InternetConnect(hInternet,lpHostName,sPort,NULL,"HTTP/1.1",INTERNET_SERVICE_HTTP,0,0);  
if(!hConnect)  
goto Ret0;  


hRequest = (HINSTANCE)HttpOpenRequest(hConnect,lpMethod,lpUrl,"HTTP/1.1",NULL,NULL,INTERNET_FLAG_RELOAD,0);  
if(!hRequest)  
goto Ret0;  


//bRet = HttpAddRequestHeaders(hRequest,"Content-Type: application/x-www-form-urlencoded",Len(FORMHEADERS),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);  
//if(!bRet)  
//goto Ret0;  


//bRet = HttpSendRequest(hRequest,NULL,0,lpPostData,nPostDataLen);  
bRet = HttpSendRequest(hRequest, "Content-Type: application/x-www-form-urlencoded", strlen("Content-Type: application/x-www-form-urlencoded"),lpPostData,nPostDataLen);  


while(TRUE)  
{  
char cReadBuffer[4096];  
unsigned long lNumberOfBytesRead;  
bRet = InternetReadFile(hRequest,cReadBuffer,sizeof(cReadBuffer) - 1,&lNumberOfBytesRead);  
if(!bRet || !lNumberOfBytesRead)  
break;  
cReadBuffer[lNumberOfBytesRead] = 0;  
strResponse = strResponse + cReadBuffer;  
}  


Ret0:  
if(hRequest)  
InternetCloseHandle(hRequest);  
if(hConnect)  
InternetCloseHandle(hConnect);  
if(hInternet)  
InternetCloseHandle(hInternet); 


return strResponse;  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值