2016-07-23 12 views
0

Ich versuche, ein Projekt zu .Net Core zu migrieren, und ich hatte eine Implementierung mit HttpWebRequest. Jetzt auf .Net-Core verwaltet ich den Code zu ändern, aber als ich die rohen Anfragen über Fiddler Inspektion meine Accept-Enconding war.NetCore HttpClient fügt unnötige Accept-Enconding

Accept-Encoding: identity, gzip, deflate 

statt

Accept-Encoding: identity 

Ich habe versucht, den Kopf zurückzusetzen, zu entfernen es aber weder auf dem Client noch Anfrage dieser 2-Header vorhanden sein, bevor ich

client.SendAsync(request); 

Wenn aus irgendeinem Grund nennen diese nicht aufgrund Begrenzung festgelegt werden kann, ist es eine Möglichkeit, Raw HTTP-Requests zu erstellen?

Antwort

1

Die HttpClientHandler.AutomaticDecompression fügt die Kopfzeile hinzu. Wenn Sie die automatische Dekomprimierung deaktivieren, wird die Kopfzeile 'Accept-Encoding' leer gelassen.

var handler = new HttpClientHandler(); 
handler.AutomaticDecompression = System.Net.DecompressionMethods.None; 
var client = new HttpClient(handler); 

var result = client.GetStringAsync("http://headers.cloxy.net/request.php"); 

von Fiddler Bestätigt:

GET http://headers.cloxy.net/request.php HTTP/1.1 
Connection: Keep-Alive 
Host: headers.cloxy.net 

Eine interessante Tatsache, dass Kräfte meinen Traffic über einen transparenten Proxy meines ISP ist, und egal, wie mein Wunsch ist, wird die Accept-Encoding: gzip immer von dem anderen empfängt Ende.

+0

Ich werde dies als eine Antwort akzeptieren. Aber ich kratzte das Projekt und ging stattdessen mit Mono anstatt mit TCP Socket für bessere Kontrolle. .Net Core fehlt momentan viel in der Implementierung von TCP Sockets. –