c#的web客户端没有得到正确的结果

本文关键字:结果 web 客户端 | 更新日期: 2023-09-27 17:52:49

我在c#中使用webclient来获取html结果,但这是不正确的。

这是我的代码片段。
WebClient client = new WebClient();
string htmlCode = client.DownloadString("https://kat.cr/");
MessageBox.Show(htmlCode);

结果不是在HTML页面上看到的。

喜爱我}ksU8²ecE¯AjIni; @ as¢oU"_I6vaµ& lt; EIEM¥"8¦H -•= uaVY_zEiI = lO& dFENmjÆH4 yfaaÿ>我ÿyzzHÆEA {oe ~«‰cC/美元ÿµ佐伊´9 o; A4j©Yn·u…eAq£-/‰X喜爱3有限公司# y ^ LxAO¤u÷O½| uØ"u =ÿ…¼×电弧炉¯暗生的BzNi1喜爱bž¼L"!µ- u o"™CogCnjuÿMøEÆ¥E§% KA§®"œ_:uOµ9 ?ž×w-y4¶™C_ªM¥一个æðØŽU0q ^ÿE³æ;Ð/±1Ænutu²rNI吗?‘xLcoWn•g .ÿIp™}¦±k喜爱

<标题> A7c " $ nanWizc"w®}oyE€7 ~不害怕Þf % =×÷^ 6 bi¢xI9Ðœ@G-oG |ø²新泽西"%®Y´ƒ我喜爱易¨Š岑"*Ƥ"

我应该怎么做才能检索到实际的页面?

c#的web客户端没有得到正确的结果

HTML代码被压缩。设置"自动解压"为"GZip"。只要试试这段代码,它就会工作(测试它与您的网页)

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
        request.AutomaticDecompression = DecompressionMethods.GZip;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        if (response.StatusCode == HttpStatusCode.OK)
        {
            Stream receiveStream = response.GetResponseStream();
            StreamReader readStream = null;
            if (response.CharacterSet == null)
                readStream = new StreamReader(receiveStream);
            else
                readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
            string data = readStream.ReadToEnd();
            response.Close();
            readStream.Close();
        }

既然你要求一个"webClient"解决方案(见注释):
因为webClient的实现没有解压缩,所以你必须自己制作解压缩的webClient。如果你继承了WebClient类,这很简单:

public class AutomaticDecompressionWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address) as HttpWebRequest;
        if (request == null) throw new InvalidOperationException("You can not use this WebClient implementation with an address that is not an http uri.");
        request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        return request;
    }
}