C# WebClient DownloadString 返回乱码



我正在尝试使用以下代码查看 http://simpledesktops.com/browse/desktops/2012/may/17/where-the-wild-things-are/的来源:

String URL = "http://simpledesktops.com/browse/desktops/2012/may/17/where-the-wild-things-are/";
WebClient webClient = new WebClient();
webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");
webClient.Encoding = Encoding.GetEncoding("Windows-1255");
string download = webClient.DownloadString(URL);
webClient.Dispose();
Console.WriteLine(download);

当我运行它时,控制台返回一堆废话,看起来像是解码错误。

我也尝试添加标题无济于事:

webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");    
webClient.Headers.Add("Accept-Encoding", "gzip,deflate");

其他网站都返回了正确的 html 源代码。我还可以通过Chrome查看页面的源代码。这是怎么回事?

URL的响应是gzip的,您应该解压缩它或设置空的接受编码标头,您不需要该用户代理字段。

  String URL = "http://simpledesktops.com/browse/desktops/2012/may/17/where-the-wild-things-are/";    
  WebClient webClient = new WebClient();    
  webClient.Headers.Add("Accept-Encoding", "");
  string download = webClient.DownloadString(URL);

我今天遇到了同样的事情。

使用 WebClient 对象检查 URL 是否返回某些内容。

但我的经历是不同的。我尝试删除接受编码,基本上使用@Antonio巴库拉在他的答案中给出的代码。但是我每次都收到相同的错误(无效操作异常)

所以这不起作用:

WebClient wc = new WebClient();
wc.Headers.Add("Accept-Encoding", "");
string result = wc.DownloadString(url);

但是添加"任何"文本作为用户代理确实可以解决问题。这工作正常:

WebClient wc = new WebClient();
wc.Headers.Add(HttpRequestHeader.UserAgent, "My User Agent String");
System.IO.Stream stream = wc.OpenRead(url);

您的里程可能会明显不同,也值得注意。我使用的是 ASP.NET 4.0.30319。

相关内容

  • 没有找到相关文章

最新更新