Entpacken von GZip-Stream von HTTPClient Antwort
Ich versuche, die Verbindung zu einem api, das gibt GZip-codierte JSON, die von einem WCF-service (WCF service WCF service). Ich bin mit dem HTTPClient Verbindung zu der API und in der Lage gewesen, die Rückkehr der JSON-Objekt in einen string. Aber ich muss in der Lage sein zu speichern zurückgegebenen Daten in einer Datenbank und als solche, ich dachte, der beste Weg wäre, um zurückzukehren und speichern Sie das JSON-Objekt eines Arrays oder byte-oder etwas entlang jenen Linien.
Was ich bin Probleme mit, die speziell ist das Dekomprimieren von GZip-Codierung und habe versucht, viele verschiedene Beispiel, aber kann immer noch nicht erhalten es.
Den code unten ist, wie ich mich zur Gründung meiner Verbindung und bekommen Sie eine Antwort, dies ist der code, gibt einen string zurück, aus der API.
public string getData(string foo)
{
string url = "";
HttpClient client = new HttpClient();
HttpResponseMessage response;
string responseJsonContent;
try
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
response = client.GetAsync(url + foo).Result;
responseJsonContent = response.Content.ReadAsStringAsync().Result;
return responseJsonContent;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
return "";
}
}
Habe ich nach ein paar verschiedene Beispiele, wie diese StackExchange-API, MSDN, und ein paar auf stackoverflow, aber ich habe nicht in der Lage zu bekommen, diesen für mich zu arbeiten.
Was ist der beste Weg, dies zu erreichen, bin ich noch auf dem richtigen Weg?
Danke Jungs.
InformationsquelleAutor Corey | 2014-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur instanziieren HttpClient wie diese:
es ist keine änderung erforderlich für den code, um die Inhalte, wenn Sie diese Lösung verwenden. Sehen Sie hier Referenz: stackoverflow.com/questions/26597665/...
auch wenn es ein Alter post, dass diese Antwort nur mein problem gelöst, in .netcore, Wechsel von 1.1 auf 2.0 scheint es der client wurde automatisch tun der Dekompression, also musste ich fügen Sie diesen code in 2.0, damit es funktioniert... vielen Dank!
Nur piggy back auf @SebastianCastaldi, aber .net core 1.1 hatte AutomaticDecompression richtig eingestellt, aber in .net-core 2.0 ist es auf NONE gesetzt. Dies dauerte mir viel zu lange, um herauszufinden,...
Ist HttpClient nicht in der Lage, zu Dekomprimieren
Brotli
? Es scheint, dassDecompressionMethods
's nur die Optionen sindNone
,GZip
, undDeflate
.InformationsquelleAutor DIG
Ok, so dass ich letztendlich mein problem gelöst. Wenn es bessere Möglichkeiten gibt lasst es mich bitte wissen 🙂
Den RootObject enthält, die gesetzt werden, werden die Werte der JSON.
Der einfachste Weg, um den oben Klasse(N) ist die Verwendung json2charp dem formatieren es entsprechend und auch die richtigen Datentypen.
Folgende ist aus einer anderen Antwort auf Stackoverflow
wieder ist es nicht zu berücksichtigen, verschachtelte JSON.
Dann schließlich nach einfügen der oben genannten Datensatz in eine Tabelle mit Spalten, die abgebildet wurden, um die JSON-ich verwendete SQL bulk-kopieren und in die folgende Klasse
Also die oben genannten arbeiten zum einfügen von JSON von einer webAPI in eine Datenbank. Dies ist etwas, das ich an die Arbeit. Keineswegs aber kann ich erwarten, dass es perfekt zu sein. Wenn Sie irgendwelche Verbesserungen, dann bitte aktualisieren Sie Sie entsprechend.
HttpClient
und IhreHttpResponse
innerhalb einerusing()
jede Anweisung, um die ordnungsgemäße, rechtzeitige Beseitigung und Schließung des zugrunde liegenden streams.InformationsquelleAutor Corey