HttpClient 在没有 Fiddler 的情况下不解密 HTTPS
HttpClient does not decrypt HTTPS without Fiddler
我不确定我的问题是否正确,但我找不到任何相关信息。我假设 HttpClient 应该自动解密 HTTPS 响应,但出于某种原因,它不会,除非 Fiddler 是 运行.
HttpClient Client;
HttpResponseMessage response;
using (var request = new HttpRequestMessage(HttpMethod.Get, "https://www.google.com/"))
{
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
response = await Client.SendAsync(request);
response.EnsureSuccessStatusCode();
}
string sResponse = await response.Content.ReadAsStringAsync();
Log(sResponse); // "\u001f�\b[=10=][=10=][=10=][=10=][=10=]\u0002��i{۸�0��\u007f\u0005͜c�c�\u0016" etc.
我试过在Fiddler中禁用所有https相关选项并重置IE代理选项,但似乎不是这样。
原来是我看错了Accept-Encoding header:
Client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
编辑:
您可以使用 "gzip, deflate" 编码,但您必须在 HttpClientHandler:
中指定解压缩方法
HttpClientHandler handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
using (var client = new HttpClient(handler))
{
// your code
}
删除 request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
那么响应将不会被编码。
我不确定我的问题是否正确,但我找不到任何相关信息。我假设 HttpClient 应该自动解密 HTTPS 响应,但出于某种原因,它不会,除非 Fiddler 是 运行.
HttpClient Client;
HttpResponseMessage response;
using (var request = new HttpRequestMessage(HttpMethod.Get, "https://www.google.com/"))
{
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
response = await Client.SendAsync(request);
response.EnsureSuccessStatusCode();
}
string sResponse = await response.Content.ReadAsStringAsync();
Log(sResponse); // "\u001f�\b[=10=][=10=][=10=][=10=][=10=]\u0002��i{۸�0��\u007f\u0005͜c�c�\u0016" etc.
我试过在Fiddler中禁用所有https相关选项并重置IE代理选项,但似乎不是这样。
原来是我看错了Accept-Encoding header:
Client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
编辑:
您可以使用 "gzip, deflate" 编码,但您必须在 HttpClientHandler:
中指定解压缩方法HttpClientHandler handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
using (var client = new HttpClient(handler))
{
// your code
}
删除 request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
那么响应将不会被编码。