【问题标题】:How can I use WebClient.DownloadString from a secure URL (https)?如何从安全 URL (https) 使用 WebClient.DownloadString?
【发布时间】:2015-07-14 15:58:53
【问题描述】:

我使用的代码是

WebClient webClient = new WebClient();                    
string xmlResult = webClient.DownloadString("https://kat.cr/usearch/ubuntu/?rss=1");

我有点困惑,因为 URL 似乎通过隧道进入了二级页面 kastatic.com:443 然后是 kat.cr:443(如果我正确理解 Fiddler)。

服务器证书似乎没问题,因此添加以下代码无济于事

 ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
                    {
                        return true;
                    };

我还尝试在 webClient 对象上设置 useragent 标头,以防我需要将其识别为浏览器或其他东西,但我认为我没有走在正确的轨道上。

编辑:我得到的响应是“12a9”,后面有 2 个奇怪的 ascii 字符(一个问号符号和一个带黑色边框的白色圆圈。

【问题讨论】:

  • 有什么问题?你得到了什么错误,如果有的话?
  • Whats this?我记得很久以前就不得不做这样的事情。 Defo 与 SSL 有关,因此值得一试
  • 它返回普通的XML。怎么了?
  • 您好 musefan,我看到了那个帖子,但实际上并不适用。该网站似乎正在使用 TLS/1.2
  • 嗨,Amit,如果您在浏览器中查看 URL,您将获得 XML。如果将 URL 放入 webClient.DownloadString 中,则会得到一个符号字符(我假设它指的是重定向或隧道)。

标签: c# .net webclient


【解决方案1】:

如果您查看 Fiddler 中的标头,则响应是 GZip 编码(压缩)。请参阅this answer 了解如何处理此问题,因为WebClient 类没有“快速简便”的方法。

【讨论】:

  • 这样一个简单的答案。作品。非常感谢! ^_^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2014-08-17
  • 2014-10-20
  • 2021-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
相关资源
最近更新 更多