博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C++】纯C++实现http打开网页下载内容的功能
阅读量:7036 次
发布时间:2019-06-28

本文共 2034 字,大约阅读时间需要 6 分钟。

#include "stdafx.h"#include 
#include
#include "Wininet.h"#pragma comment(lib,"Wininet.lib")using std::cout;using std::endl;//模拟浏览器发送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 = NULL;hConnect = NULL;hRequest = NULL;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);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;}

这是一个函数,只要调用这个函数,就可以获取网页的内容

调用方法

int main(){	//CString strResponse = HttpRequest("translate.google.com",80,"/translate_t?langpair=en|zh-CN","POST","hl=zh-CN&ie=UTF-8&text=this is me&langpair=en|zh-CN",strlen("hl=zh-CN&ie=UTF-8&text=this is me&langpair=en|zh-CN"));	std::string strResponse = HttpRequest("www.qsxck.com", 80, "/", "GET", NULL, 0);		//cout << strResponse.c_str();		FILE * fp;	errno_t t =  fopen_s(&fp,"D:\\old.html", "w");		fwrite(strResponse.c_str(),1, strResponse.length(), fp);	fclose(fp);	getchar();    return 0;}

  

 

转载地址:http://avnal.baihongyu.com/

你可能感兴趣的文章