HTTP GET的三种方式

来源:互联网 发布:网络市场监管系统 编辑:程序博客网 时间:2024/06/17 17:23

一.第一种方式(包装类的方式)

a.在VC++添加类,选择typelib


b.选择文件:C:\Windows\System32\winhttp.dll


选择到右边生成的类,最后点完成,即产生了一个CWinhttpRequest类


------剩余具体步骤-----------------------------------------

//1.初始化COM组件
//2.创建组件对象指针
//3.实例化
//----------
//4.open(pHttpReq->Open(_T("GET"),_T("http://pan.baidu.com"

),Async);)
//5.send(pHttpReq->Send(vtMissing);)
//6.Response(pHttpReq->get_ResponseText())
//----------
//7.释放实例化
//8.删除对象指针
//9.卸载COM组件


//初始化COM组件::CoInitialize(nullptr);CWinHttpRequest *pHttpReq = new CWinHttpRequest();BOOL bret = pHttpReq->CreateDispatch(_T("WinHttp.WinHttpRequest.5.1")/*__uuidof(WinHttpRequest)*/);if (!bret){return ;}COleVariant asyn =  VARIANT_FALSE;pHttpReq->Open(_T("GET"),_T("http://pan.baidu.com"),asyn);pHttpReq->Send(vtMissing);CString str = pHttpReq->get_ResponseText();MessageBox(str);pHttpReq->ReleaseDispatch();delete pHttpReq;::CoUninitialize();

二.第二种方式( import+接口方式)

接口:IWinHttpRequest

#import "C:\\Windows\\System32\\winhttp.dll"

::CoInitialize(nullptr);IWinHttpRequest *pHttpReq = nullptr;HRESULT hr = CoCreateInstance(__uuidof(WinHttpRequest),nullptr,CLSCTX_ALL,__uuidof(IWinHttpRequest),(LPVOID*)&pHttpReq);if (FAILED(hr)){::CoUninitialize();return ;}hr = pHttpReq->Open(_T("GET"),_T("https://mail.qq.com/cgi-bin/loginpage"));if (FAILED(hr)){pHttpReq->Release();::CoUninitialize();return ;}hr = pHttpReq->Send();if (FAILED(hr)){pHttpReq->Release();::CoUninitialize();return ;}CString strText = pHttpReq->ResponseText;MessageBox(strText);pHttpReq->Release();::CoUninitialize();



三.第三种方式( import+智能指针包装类的方式)

::CoInitialize(nullptr);IWinHttpRequestPtr  pHttpReq = nullptr;HRESULT hr = pHttpReq.CreateInstance(__uuidof(WinHttpRequest));if (FAILED(hr)){::CoUninitialize();return ;}hr = pHttpReq->Open(_T("GET"),_T("https://mail.qq.com/cgi-bin/loginpage"));if (FAILED(hr)){//pHttpReq.Release();::CoUninitialize();return ;}hr = pHttpReq->Send();if (FAILED(hr)){//pHttpReq.Release();::CoUninitialize();return ;}CString strText = pHttpReq->ResponseText;MessageBox(strText);//pHttpReq.Release();::CoUninitialize();}



0 0