47

我正在尝试使用 WebClient / HttpWebRequest 从服务器下载一些数据。我使用以下代码来执行此操作:

WebClient client = new WebClient();
client.Credentials = new NetworkCredential("admin", "password");
Stream datastream = client.OpenRead("http://routerlogin.com/cgi-bin/CF_logs.html");
StreamReader reader = new StreamReader(datastream);

服务器是我的页面在我的路由器配置中。它在浏览器中运行良好,但是当使用我的代码下载时,它会抛出一条WebException消息

服务器违反了协议。Section=ResponseHeader Detail=CR 后面必须跟 LF,在 WinForms 中?

我找到了一个解决方案,如果他们使用 ASP.net,则可以使用,将以下内容添加到 web.config:

<configuration> 
    <system.net> 
        <settings> 
            <httpWebRequest useUnsafeHeaderParsing="true" /> 
        </settings> 
    </system.net> 
</configuration>

但是,我正在制作一个 WinForms 应用程序,所以这对我不起作用。有什么方法可以解决这个问题?

4

2 回答 2

27

首先,添加 app.config 文件与添加任何其他文件一样简单,如何:将应用程序配置文件添加到 C# 项目

然后,您只需将上面的代码片段添加到新的 app.config 中。

通过代码设置该属性的另一种方法,避免了对 app.config 的需要,显示在此处此处

于 2013-05-26T14:49:09.850 回答
2

您的问题可能不需要任何 app.config 更改(在我的情况下,此配置更改没有任何区别)。我会尝试按照此链接中的建议修改您的 Accept: 标头。

就我而言,我直接创建了一个 HttpWebRequest,所以我的解决方案是添加以下内容:

request.Accept = "text/html, application/xhtml+xml, */*"
于 2020-02-21T15:29:11.850 回答