日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POST教程笔记 - WinHttp获取网页源码

發布時間:2024/6/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POST教程笔记 - WinHttp获取网页源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

①、WinINet與WinHttp的異同點,為什么使用WinHttp講解?

詳情見:《WinINet與WinHttp總結》文檔,已經打包給大家了。

②、WinHttp接口調用方式:
微軟官方地址:http://msdn.microsoft.com/en-us/ ... 84263(v=vs.85).aspx
WinHttp微軟提供了兩種調用方式:C++調用API的版本、COM組件的版本。這里面使用的是 C++ Interface 接口的組件的方式來給大家講解。

③、WinHttp常用命令講解:
詳情見:http://msdn.microsoft.com/en-us/ ... 84263(v=vs.85).aspx

/*①、獲取網頁源碼的步驟: 1、COM組件初始化; 2、定義WinHttp對象指針; 3、創建并實例化WinHttp組件;4、調用Open方法打開連接; 5、調用Send方法發送請求; 6、獲取ResponseText返回的文本;7、釋放WinHttp組件對象; 8、釋放WinHttp對象指針; 9、卸載COM組件;*/
/*②、使用WinHttp3種方法的優缺點 1、類型庫生成包裝類的方式:優點->使用方便,貼近C++,缺點->COM接口的默認缺省參數必須填寫,不靈活; 2、import+接口方式:優點->COM接口的申請與釋放自己控制,很靈活,缺點->控制不好,引起內存泄露,且COM組件的實例化參數較多; 3、import+智能指針包裝類的方式:優點->智能指針,使用方便,不用擔心內存泄露,COM組件實例化簡單,可使用COM組件的默認缺省參數;*/

?

下面給出三種方法的使用示例:

方法1:

// 方法1 類型庫生成包裝類的方式:優點->使用方便,貼近C++,缺點->COM接口的默認缺省參數必須填寫,不靈活; void CHttpTestDlg::OnBnClickedButton1() {CoInitialize(NULL);CWinHttpRequest* pWinHttp = new CWinHttpRequest;BOOL bRet = pWinHttp->CreateDispatch(L"WinHttp.WinHttpRequest.5.1");if (!bRet) return;// CLSID clsid = { 0 }; // CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid); // pWinHttp->CreateDispatch(clsid); COleVariant async = VARIANT_FALSE;pWinHttp->Open(L"GET", L"http://www.baidu.com", async);pWinHttp->Send(vtMissing);CString strSrc = pWinHttp->get_ResponseText();MessageBox(strSrc);pWinHttp->ReleaseDispatch();delete pWinHttp;CoUninitialize(); }

// 以上,
CWinHttpRequest是類型庫生成包裝類

方法2:

#import "C:\\windows\\SysWOW64\\winhttp.dll" no_namespace // 方法2 void CHttpTestDlg::OnBnClickedButton2() {BSTR bstrBody;CString strBody;CoInitialize(NULL);IWinHttpRequest* pHttpReq = NULL;HRESULT hr = \CoCreateInstance(__uuidof(WinHttpRequest),nullptr,CLSCTX_ALL,__uuidof(IWinHttpRequest),(PVOID*)&pHttpReq);if (FAILED(hr)){goto _exit0;}hr = pHttpReq->Open(L"GET", L"http://www.baidu.com");if (FAILED(hr)){goto _exit1;}hr = pHttpReq->Send();if (FAILED(hr)) {goto _exit1;}hr = pHttpReq->get_ResponseText(&bstrBody); // <=> _bstr_t bStrRsp = pHttpReq->ResponseText;if (FAILED(hr)) {goto _exit1;}strBody = bstrBody;MessageBox(strBody);_exit1:pHttpReq->Release();_exit0:CoUninitialize(); }

方法3:

#import "C:\\windows\\SysWOW64\\winhttp.dll" no_namespace // 方法3 void CHttpTestDlg::OnBnClickedButton3() {BSTR bstrBody;CString strBody;CoInitialize(NULL);IWinHttpRequestPtr pHttpReq = NULL;HRESULT hr = pHttpReq.CreateInstance(__uuidof(WinHttpRequest));if (FAILED(hr)){goto _exit0;}hr = pHttpReq->Open(L"GET", L"http://www.baidu.com");if (FAILED(hr)) {goto _exit0;}hr = pHttpReq->Send();if (FAILED(hr)) {goto _exit0;}pHttpReq->get_ResponseText(&bstrBody);strBody = bstrBody;MessageBox(strBody);_exit0:CoUninitialize(); }

?

轉載于:https://www.cnblogs.com/Lthis/p/4926410.html

總結

以上是生活随笔為你收集整理的POST教程笔记 - WinHttp获取网页源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。