WebClient.DownloadingString更改请求的URL

如果我将URL放在浏览器上,我的服务器会正​​确响应(XML)。 虽然,如果这个相同的URL通过WebClient.DownloadingString()方法,URL中的某些内容会发生变化,我的服务器会正​​确响应,但是会有拒绝访问的消息(也是XML),就像某些内容已经发生了变化一样。

“错误信息”

8Unable 

请求时使用的URL就像这样:

 http://...S%0D%0A++S%0D%0A++S%0D%0A%0D%0A%09%09 

我已经尝试过将编码改为UT8,ISO等等。他们中没有人工作过。

您必须确保发送服务器所需的所有必要数据,cookie和请求标头。

我建议您安装Fiddler Web Debugger并监视来自Web浏览器的成功请求,之后尝试在您的应用程序中重新创建此类请求。

也许服务器会将您重定向到某个错误页面,因为WebClient不处理cookie。 您可以创建自己的WebClient版本并添加cookie支持。 创建一个来自WebClient并重写GetWebRequest方法的类,您必须添加CookieContainer 。 以下是处理cookie的WebClient的简单实现:

 public class MyWebClient : WebClient { public CookieContainer CookieContainer { get; private set; } public MyWebClient() { this.CookieContainer = new CookieContainer(); } protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request is HttpWebRequest) { (request as HttpWebRequest).CookieContainer = this.CookieContainer; (request as HttpWebRequest).AllowAutoRedirect = true; } return request; } }