gpt4 book ai didi

c# - WebRequest 加载 HTMLDocument 返回 SSL 站点的所有特殊字符

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:57 25 4
gpt4 key购买 nike

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

对于这个特定问题,我真的找不到任何东西,所以如果有人能指出我正确的方向,我会感到很迷茫。

编辑:这是一张图片,因为我无法复制粘贴它 enter image description here

最佳答案

我的猜测是响应被压缩了。如果您使用像 Charles 或 Fiddler 这样的 WebDebugger。您可以看到请求和结构以及它们包含的数据 - 这使得稍后在编程时复制 http 请求变得容易得多。试试下面的代码。

try
{
string webAddr = url;
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.ContentType = "text/html; charset=utf-8";
httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0";
httpWebRequest.AllowAutoRedirect = true;
httpWebRequest.Method = "GET";
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;


var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream(), Encoding.UTF8))
{
var responseText = streamReader.ReadToEnd();
doc.LoadHtml(responseText);
}
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
}

代码设置请求的编码。您还可以在读取响应时在流阅读器中设置编码。并启用自动解压。

关于c# - WebRequest 加载 HTMLDocument 返回 SSL 站点的所有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com