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; } }