我正在通过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