Ich nehme einige Daten mit der XML-API fogbugz. Diese API bietet Daten immer als UTF-8 an.Kodierung mit HttpClient in. NET
Bei Verwendung der WebClient
Klasse für eine Anfrage kann ich die Codierung einstellen. Zum Beispiel:
var result = new WebClient();
result.Encoding = Encoding.UTF8;
Aber was ist mit der Klasse HttpClient
?
HttpClient client = new HttpClient();
Sollte ich:
client.GetByteArrayAsync(url);
... und dann wandeln die Bytes aus der Codierung (UTF-8) in einen String?
Oder gibt es eine Möglichkeit, den Inhalt direkt als UTF-8-Zeichenfolge zu erhalten?
using (var client = Connector.GetHttpClient())
{
var byteData = await client.GetByteArrayAsync(url);
data = Encoding.UTF8.GetString(byteData);
}
Schließlich ist hier ein Auszug aus der XML-Antwort:
<?xml version="1.0" encoding="UTF-8"?>
<response>
Hallo Jon verwenden. Danke für deine Antwort. Das Encoding-Tag ist immer die Antwort enthalten. Im FogBugz Case ist es immer UTF-8. Hier ein Beispiel für den Anfang des XML Xml version = "1.0" encoding = "UTF-8"?> .... ich auf diesem mit webclient verlassen, gibt es bei der Kodierung Von der API respektiert, also bin ich nicht sicher, wieder auf der api ohne die dokumentierte Funktion zu vertrauen :-( So sollte das ByteArray (wie mein codesample oben) der sicherste Weg sein? –
@BoasEnkler: Der Client isn Ich werde die Codierung aus dem * body * nehmen - sie sollte in den * headers * angegeben werden. Aber wie gesagt, der sicherere Weg besteht darin, sie als Bytes zu holen und sie nur aus den Binärdaten zu analysieren ein 'MemoryStream', um das Byte-Array zu umhüllen.) –
ok denke, das ist die beste Lösung.Kris empfahl auch das gleiche t Hing :) –