2014-09-11 99 views
3

我正在瀏覽比較WinInet和WinHttp的MSDN頁面。看起來好像WinInet比WinHttp有更多的功能。 MSDN頁面是here。在什麼情況下會選擇通過WinInet的WinHttp?wininet或winhttp,這是POST請求的首選

考慮到WinInet具有可用於POST數據的HttpSendRequest,並且WinHttp也具有WinHttpSendRequest。 WinHttp通過WinInet的優勢是什麼?使用WinHttp和WinInet發佈數據的方式有差異嗎?另外,如果使用WinHttp和WinInet的POST請求的一些例子會有所幫助,那麼可以使用一些小的示例代碼。

編輯3 Wireshark的屏幕截圖 enter image description here

EDIT 2我終於成功地得到應用一個HTTP_STATUS_CODE和它的200 OK,但在發送POST數據時,問題就來了,它被送往但參數沒有設置。我試圖在PHP端實現這個代碼。

<?php 

    $fp = fopen("data.txt", "a"); 
    fwrite($fp, "ID = " . $_POST['id']); 
    fclose($fp); 

?> 

該文件一旦創建爲應用程序運行,但ID參數沒有設置,將其寫入文件 「ID =」並沒有更多的。 10沒有通過,不知道爲什麼

謝謝。

編輯:鏈接到我試圖使用的示例。 HttpSendRequest to POST form data

+1

就好了,當圖書館作者開始迷惑自己時,我會去libcurl。 – gbjbaanb 2014-09-11 09:05:09

+0

我知道libcurl,但我不想使用任何庫@gbjbaanb :),謝謝你的建議 – David 2014-09-11 09:09:10

+1

索取圖書館關於SO的建議並不是真的允許;話雖如此,我剛剛瞭解到[卡薩布蘭卡](http://casablanca.codeplex.com),看起來非常整齊,可能值得考慮。 – 2014-09-11 17:36:11

回答

4

其實MSDN有一個良好的網頁上WinHTTP vs. WinINet,他說:

除了少數例外,是的WinINet的WinHTTP的一個超集。在兩者之間進行選擇時,應使用WinINet,除非您計劃在需要模擬和會話隔離的服務或類似服務的進程中運行。

+0

我得到了,但我讀了另一個網站上的帖子,應該使用WinHttp POST請求,我嘗試使用WinInet POST請求,它不工作 – David 2014-09-11 08:09:32

+0

嗯,我用MFC Wininet類CHttpConnection和CHttpFile發出POST請求,你能提供一個失敗的代碼嗎?這樣做會更容易理解你在做什麼錯誤。 – 2014-09-11 08:13:15

+0

我編輯了問題,並鏈接到示例是在那裏,這是另一個問題,但它不起作用。 – David 2014-09-11 08:17:56

2

This例子應該幫助你,如果你有興趣的WinInet例如,你可以看看here

更進一步,從MSDN關於WinInet的報價:

的WinINet注意不支持服務器實現。另外,它不應該從服務中使用。對於服務器實現或服務使用Microsoft Windows HTTP服務(WinHTTP)。

這是一個很好的建議。