2013-12-10 100 views
1

當我使用錯誤的服務器地址(如127.0.0.1)作爲URL的服務器地址發送http請求時,libcurl返回CURLE_OK並讓我得到http代碼0.但是,當我使用IE發送相同的請求時,我得到了http代碼404。有沒有人知道如何在發送類似請求時使用libcurl獲取錯誤代碼而不是0。我無法通過libcurl獲取http代碼

+0

IE不是協議驗證工具。 –

回答

4

當傳輸正常時,libcurl返回CURLE_OK。從HTTP服務器獲取404被認爲是一個很好的轉移。通過設置CURLOPT_FAILONERROR選項,可以使> = 4xx HTTP響應代碼導致libcurl錯誤。

或者,這可能是更好的方法,您在傳輸後提取HTTP響應代碼,例如curl_easy_getinfo()來找出HTTP響應代碼,以查看HTTP服務器對您請求的資源的看法。

+0

謝謝你的捲曲作者。當我使用POST發送請求到一個沒有Web服務器的站點時,liburl是否認爲這是一個很好的轉移? – ncubrian

+0

如果你這樣做,它不會返回CURLE_OK。 –

+0

問題已解決。事實證明,我的80端口正在被Skype使用。非常感謝你! – ncubrian

1

嘗試使用它來訪問實際運行Web服務器的站點,並嘗試檢索不存在的文件。例如,http://www.google.com/404。你的瀏覽器幾乎肯定不會從訪問127.0.0.1獲得404,即使它告訴你它就是這樣。

+0

感謝您的回答。但是,我怎麼知道一個網站是否真的在使用libcurl運行網絡服務器? – ncubrian

+0

我不認爲我理解。 Web服務器不運行libcurl。你的客戶端使用libcurl,你可以使用它來查詢網絡上的任何Web服務器。 –

+0

如果您想知道如何判斷libcurl是否因爲404而無法檢索文件,或者因爲根本無法聯繫服務器,則應該使用libcurl請求中的響應代碼。例如見http://curl.haxx.se/libcurl/c/curl_easy_strerror.html –