2016-09-15 24 views
0

私の質問が正しいかどうかわかりませんが、関連する情報は見つかりませんでした。私はHttpClientが自動的にHTTPS応答を解読するはずだと仮定していますが、何らかの理由でFiddlerが動作している場合を除いてそうではありません。HttpClientはFiddlerなしでHTTPSを復号化しません

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\0\0\0\0\0\u0002��i{۸�0��\u007f\u0005͜c�c�\u0016" etc. 

私はフィドラーとリセットIEのプロキシオプションですべてのHTTPS関連のオプションを無効にしようとしたが、それはそうではないようです。あなたは "GZIPを収縮" を使用エンコーディングをしていますが、自分の中で伸張方法を指定することができます

Client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate"); 

EDITを:

答えて

0

は、それは私が間違っているのAccept-Encodingヘッダを持っていたが判明しましたHttpClientHandler

HttpClientHandler handler = new HttpClientHandler() 
{ 
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
}; 

using (var client = new HttpClient(handler)) 
{ 
    // your code 
} 
関連する問題