我正在通過HttpWebRequest/HttpWebResponse對象向網站發出請求。HttpWebResponse.GetResponse()fiddler說:「響應頭解析失敗。」
我正在對該網站進行幾次成功的調用,並且對同一動態頁面的每個其他調用都失敗。
在調試器中,我得到一個「內部服務器錯誤500」小提琴手也顯示出500的響應,包含:
[Fiddler] Response Header parsing failed.
This can be caused by an illegal HTTP response earlier on this reused server socket-- for instance, a HTTP/304 response which illegally contains a body.
Response Data:
<plaintext>
0D 0A 3C 21 44 4F 43 54 59 50 45 20 48 54 4D 4C 20 50 55 42 4C 49 43 20 ..<!DOCTYPE HTML PUBLIC
22 2D 2F 2F 57 33 43 2F 2F 44 54 44 20 48 54 4D 4C 20 34 2E 30 20 54 72 "-//W3C//DTD HTML 4.0 Tr
61 6E 73 69 74 69 6F 6E 61 6C 2F 2F 45 4E 22 3E 0D 0A 3C 48 54 4D 4C 3E ansitional//EN">..<HTML>
0D 0A 09 3C 48 45 41 44 3E 0D 0A 09 09 3C 74 69 74 6C 65 3E 56 69 65 77 ...<HEAD>....<title>View
我已經刪除了所有的十六進制和瀏覽網頁併爲我所期望返回,但由於某種原因,服務器報告500,並且HttpWebRequest對象在此上引發異常。
我試過所有其他「修復」這個問題,沒有工作。它可能只是從服務器發送的格式錯誤的數據,但是有比使用HttpWebRequest更低級別的對象而不是皮塔可以使用?
編輯:我沒有在上面的例子中包含整個十六進制/整個html塊。
編輯:關閉提琴手我得到這個在調試器
編輯:所以,從我所看到的在HttpWebResponse對象採取相應的行動。該服務器只是片狀,有時用不同的http狀態碼返回相同的確切數據。爲了快速解決問題,我只是將每個調用包裝在try/catch中,並在catch塊中調用完全相同的調用。到目前爲止,它工作的很好,並且證明它是網站的錯誤,而不是HttpWebResponse對象。
The server committed a protocol violation. Section=ResponseStatusLine
你有比你想打的網站控制? – 2012-01-09 00:04:36
@ M.Babcock我不知道。到目前爲止,它看起來像我可以從500響應剝離HTML並解析,但這會很臭! – user1231231412 2012-01-09 00:06:45
@Amadan這是一個winforms應用程序。 – user1231231412 2012-01-09 00:20:12