HttpClient.GetAsync 对某些网站返回奇怪的结果

Ari*_*ian 2 c# compression httpclient

请考虑这个简单的代码:

private async void button3_Click(object sender, EventArgs e)
{
    textBox1.Text = "It begins...";
    await DoAsync_Button3();
}

private async Task DoAsync_Button3()
{
    HttpClient client = new HttpClient();
    HttpResponseMessage response = await client.GetAsync("https://www.stackoverflow.com/");
    response.EnsureSuccessStatusCode();
    string responseBody = await response.Content.ReadAsStringAsync();
    textBox1.Text = responseBody;
}
Run Code Online (Sandbox Code Playgroud)

和简单的用户界面:

在此输入图像描述

问题是对于某些网站我得到了一些奇怪的结果。例如:https: //www.dotnetperls.com/

我得到这个结果:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我得到了奇怪的结果,而StatusCode200。我如何确定问题出在哪里?谢谢

Arm*_*ibi 6

您需要解压缩响应:

HttpClient httpClient = new HttpClient(new HttpClientHandler
{
    AutomaticDecompression = System.Net.DecompressionMethods.All
});
string responseAsString = await httpClient.GetStringAsync("https://www.dotnetperls.com/");
Console.WriteLine(responseAsString);
Run Code Online (Sandbox Code Playgroud)

SocketsHttpHandler如果您使用的是 .NET 5 或 6,则可以使用HttpClientHandler.

  • .NET Core 5 和 6 都不存在,产品分别称为 .NET 5 和 .NET 6。 (2认同)