Abrufen einer UTF-8-Antwort mit httpclient in Windows Store-Apps

8

Ich baue eine Windows Store-App, aber ich bin dabei, eine UTF-8-Antwort von einer API zu bekommen.

Dies ist der Code:

%Vor%

Das reponseString enthält immer seltsame Zeichen, die Akzente wie é haben sollten, und ich habe versucht, einen Stream zu verwenden, aber die API, die ich in einigen Beispielen gefunden habe, existiert nicht in Windows RT.

edit: verbesserter Code, immer noch dasselbe Problem

    
SamuelDebruyn 26.03.2014, 01:00
quelle

7 Antworten

19

Anstatt response.Content.ReadAsStringAsync() direkt zu verwenden, können Sie response.Content.ReadAsBufferAsync() , auf das @Kiewic zeigt, wie folgt verwenden:

%Vor%

Dies funktioniert in meinem Fall und ich denke, dass UTF8 die meisten Probleme lösen sollte. Nun gehe zur Zahl, warum es keine Möglichkeit gibt dies mit ReadAsStringAsync zu tun:)

    
Camilo Martinez 25.01.2015, 00:21
quelle
2

Ich mag den Ansatz von Marchewko, eine Erweiterung zu verwenden, aber der Code funktionierte nicht für mich. Das tat:

%Vor%     
pius 31.03.2016 11:38
quelle
2

Es wurde so gelöst:

%Vor%     
Ogglas 15.05.2017 13:40
quelle
1

Das HttpClient gibt Ihnen nicht viel Flexibilität.

Sie können stattdessen auch HttpWebRequest verwenden und die rohen Bytes aus der Antwort mit HttpWebResponse.GetResponseStream() abrufen.

    
BartW 26.03.2014 09:59
quelle
0

Ich kann noch nichts sagen, also muss ich hier meine Gedanken hinzufügen.

Sie könnten versuchen, _client.GetStringAsync(url) als Vorschlag für @cremor zu verwenden und Ihre Authentifizierungsheader mit der Eigenschaft _client.DefaultRequestHeaders festzulegen. Alternativ könnten Sie auch versuchen, die Methode ReadAsByteArrayAsync für das Objekt response.Content zu verwenden und System.Text.Encoding zu verwenden, um dieses Bytearray in eine UTF-8-Zeichenfolge zu dekodieren.

    
Wesley Cabus 26.03.2014 09:19
quelle
0

Mein Ansatz mit einer Erweiterung:

%Vor%     
Jens Marchewka 25.03.2015 14:00
quelle
0

Vielleicht ist das Problem, dass die Antwort gezippt ist. Wenn der Inhaltstyp gzip ist, müssen Sie die Antwort in einer Zeichenfolge dekomprimieren. Einige Server tun dies, um Bandbreite zu sparen, die normalerweise gut ist. In .NET Core und wahrscheinlich .NET Framework wird die Antwort automatisch entpackt. Aber das funktioniert nicht in UWP. Das scheint mir ein eklatanter Fehler in UWP zu sein.

%Vor%

Dieser Thread zeigt ein klares Beispiel für das Dekomprimieren der Antwort:

Komprimierungs- / Dekomprimierungszeichenfolge mit C #

    
Melbourne Developer 15.01.2018 06:35
quelle