2012-10-17 42 views
3

如果使用WinHTTP,例如HTTP頭部出現問題,WinHttpReceiveResponse將返回ERROR_WINHTTP_INVALID_SERVER_RESPONSE。即使WinHTTP格式不正確,也檢索HTTP響應

有無論如何去獲得返回的數據,儘管它是畸形的?

+0

在不同的語言中有很多方法。你喜歡哪種編程語言? – Searush

+0

例如,我可以告訴你一個ASP.NET/VB的方法(沒有iframes) – Searush

+0

WinHTTP是一個API。所以任何語言都可以,但我不需要示例代碼,只是解釋如何在返回錯誤響應後從WinHTTP獲取數據。但它必須使用WinHTTP – DougN

回答

2

直接的方法是在這種情況下繞過WinHTTP API並使用套接字進行「原始」讀取,並盡力解釋響應頭。

如果可以找到與content-length匹配的行,那麼即使標頭無效,您也至少可以獲取所有數據。要嘗試這種方法,可以在調試器中運行代碼,並查看Web服務器實際發送的內容,或嘗試捕獲數據包流並查看第一個數據包以查找原始字節。

您的結果很明顯取決於響應的實際問題。

+1

我無法輕易擺脫WinHTTP API - 它爲我處理SSL,身份驗證,代理等,我不喜歡重新編寫所有這些。在我的情況下,這將是生產代碼,當它遇到錯誤時,會將原始代碼轉儲到日誌中,以便我們找出爲什麼它不會加載。 – DougN

相關問題