c#在获取HttpWebResponse服务器响应出现错误的解决方案

2013-12-11 04:01 ·Ab叔 5599 3 <- 点击左侧的数字“攒”一个吧

在使用c#获取网页内容的时候因为一些厂商在返回头里增加了自己的特定字符或者注释代码,导致程序异常。

比如:

HttpWebRequest myReq =(HttpWebRequest)WebRequest.Create(url);

WebResponse myResp = myReq.GetResponse();//exception is thrown here

访问腾讯的时候他爆头里居然有<!--开始的注释。

C#遇到这样不符合微软规范的包头的时候会直接跳出异常:

HttpWebRequestError: The server committed a protocol violation. Section=ResponseHeader Detail=XXXX

解决这个问题的方法就是在程序配置文件中增加开关,告诉。net框架不需要验证不安全的header返回就好了。

比如:

<system.net>

    <settings>

      <httpWebRequest useUnsafeHeaderParsing="true" />

    </settings>

  </system.net>