添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
最近写程序抓取数据,发现对有的网站用HttpWebrequest抓取网页的时候会报错,捕获异常提示:"服务器提交了协议冲突 Section=ResponseStatusLine ”,改用WebClient也是同样问题,后来知道,WebClient是对HttpWebrequest进一步进行了封装。

最后终于找到问题根源:The  server  committed  a  protocol  violation.  Section=ResponseHeader  Detail=CR  must  be  followed  by  LF 微软没有容忍不符合RFC  822中的httpHeader必须以CRLF结束的规定的服务器响应。

通过修改配置文件解决:在app.config(WinForm)或web.config(Web)文件里修改。


WinForm下的app.config默认不存在,手动在Debug文件夹所在的同级目录下新建一个XML配置文件,内容为:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.net>

<settings>

<httpWebRequest  useUnsafeHeaderParsing= "true "  />

</settings>

</system.net>

</configuration>

编译以后会在Debug下面自动创建一个 程序名.exe.config 的配置文件


服务器提交了协议冲突. Section=ResponseStatusLine,WebClient使用Cookie

自己写了个程序,利用post获取某网站的信息,当进行到httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()时会提示“服务器提交了协议冲突. Section=ResponseStatusLine”(有时出有时不出,好像跟电脑或网络有关) 百度了下,几个人都说要改webclient等来提交请求,但我仍想利用httpWebRequest.GetResponse(),不想改其他代码了.关于“”错误,百度上很多人都是说使用下面的代码解决,但是我用了都不成功,不知道是为什么。我估计不是好的解决方法。WinForm下的app.con. Read More