【发布时间】:2018-02-28 12:43:13
【问题描述】:
非常标准的 HttpWebRequest 实现,每当我通过某个 URL 来获取 html 时,它返回的只是特殊字符。下面是一个返回的示例。
现在这个网站是 SSL,所以我想知道这是否与它有关,但我以前从未遇到过这个问题,我已经将它用于其他 SSL 网站。
�
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
var request = (HttpWebRequest)WebRequest.Create(url);
using (var response = (HttpWebResponse)request.GetResponse())
{
Stream data = response.GetResponseStream();
HtmlDocument hDoc = new HtmlDocument();
using (StreamReader readURLContent = new StreamReader(data))
{
html = readURLContent.ReadToEnd();
hDoc.LoadHtml(html);
}
}
对于这个特定问题,我真的找不到任何东西,所以如果有人能指出我正确的方向,那我有点迷失了。
【问题讨论】:
-
嗯,响应流仍然是编码的。这很常见。你必须解码它。您可以阅读标题或
response.CharacterSet以获取编码(Encoding.GetEncoding(response.CharacterSet);),如果未指定则回退到Encoding.GetEncoding("utf-8");。有时,您必须从 html 页面的元字符集中提取编码以匹配实际使用的编码。 -
当我们没有您使用的网址时,我们很难重新创建您的错误。如果您把它交给我们,我们可能会在 2 分钟内解决您的问题。
标签: c# ssl httpwebrequest html-agility-pack