服务器提交了协议冲突. Section=ResponseStatusLine的解决办法

程序部署到服务器后,访问对方提供的接口页面后,返回错误“服务器提交了协议冲突. Section=ResponseStatusLine”,访问代码如下:

WebClient webClient = new WebClient();

webClient.Credentials = CredentialCache.DefaultCredentials;

 

Encoding encoding = Encoding.GetEncoding("utf-8"); // 如果是乱码就改成 utf-8 / GB2312

Byte[] responseData = null;

try

{

    responseData = webClient.DownloadData(pageUrl);

}

catch (Exception ex)

{

    MessageBox.Show(ex.Message);

    return;

}

 

根据错误在百度查找了一下解决办法,第一种办法是加上UserAgent,添加如下代码,可是没有产生任何作用。

webClient.Headers.Set(System.Net.HttpRequestHeader.UserAgent, " Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3");

 

第二种办法是在web.config 中添加如下配置:

<configuration>

    <system.net>

        <settings>

            <httpWebRequest useUnsafeHeaderParsing="true" />

        </settings>

    </system.net>

</configuration>

添加后发现返回的结果字符串是一个类似云盾的提示页面,仍然没有解决问题。

 

最后联系了对方平台的技术人员,将我们这里访问调用的服务器IP加入白名单后,程序即可正常执行。估计是云盾防火墙防御产生的效果。如果大家发现了更好的解决办法请务必留言告诉我,不胜感激!

发表评论

发表评论