频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
c++发送http请求winnet的代码实例
2018-03-12 10:22:36      个评论    来源:qq_28039867的博客  
收藏   我要投稿

写之前网上也有找 不过可以发送http请求 但是不能发送数据与是做了改进

//模拟浏览器发送HTTP请求函数
//地址,端口,跳转路径,方法,数据,数据长度
std::string 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);
	hConnect = (HINSTANCE)InternetConnect(hInternet,lpHostName,sPort,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
    if(!hConnect)  
        goto Ret0;  
  //建立一个 HTTP 请求
	hRequest = (HINSTANCE)HttpOpenRequest(hConnect,_T(lpMethod),lpUrl,_T("HTTP/1.1"),lpUrl,NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);
    //hRequest = (HINSTANCE)HttpOpenRequestW(hConnect,new WCHAR[CString(lpMethod).GetLength()+1],new WCHAR[CString(lpUrl).GetLength()+1],_T("HTTP/1.1"),lpUrl,NULL, INTERNET_FLAG_NO_CACHE_WRITE, 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;  
	//发送请求
	TCHAR* postheader = _T("Content-Type: application/x-www-form-urlencoded");
    bRet = HttpSendRequest(hRequest,postheader,-1,lpPostData,strlen(lpPostData));  
    while(TRUE)  
    {  
        char cReadBuffer[4096];  
        unsigned long lNumberOfBytesRead;  
		//下载HTTP服务器上的资源了。
        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;  
} ; 
  

可以直接用头部加上

#include "Wininet.h"

#pragma comment(lib,"Wininet.lib")

点击复制链接 与好友分享!回本站首页
相关TAG标签 c++ http winnet 代码
上一篇:c++发送http请求chttpcile代码实例
下一篇:c++函数包装器实现教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站