Używam niektórych danych przy użyciu interfejsu API XML fogbugz. Ten interfejs API zawsze oferuje dane jako UTF-8.Kodowanie za pomocą HttpClient w .NET 4.5
Podczas korzystania z klasy WebClient
w celu wysłania zapytania, jestem w stanie ustawić kodowanie. Na przykład:
var result = new WebClient();
result.Encoding = Encoding.UTF8;
Ale co z klasą HttpClient
?
HttpClient client = new HttpClient();
powinienem używać:
client.GetByteArrayAsync(url);
... a potem konwertować bajtów z kodowania (UTF-8) na ciąg?
Czy istnieje sposób, aby bezpośrednio uzyskać zawartość jako ciąg znaków UTF-8?
using (var client = Connector.GetHttpClient())
{
var byteData = await client.GetByteArrayAsync(url);
data = Encoding.UTF8.GetString(byteData);
}
A oto fragment odpowiedzi XML:
<?xml version="1.0" encoding="UTF-8"?>
<response>
Hi Jon. Thx za twoją odpowiedź. Znacznik kodowania zawsze zawiera odpowiedź. W przypadku FogBugz zdefiniowane jest zawsze UTF-8. Tutaj przykładem początku XML Xml version = "1.0" encoding = "UTF-8"?> .... I powoływać się na ten z WebClient, tam nie było kodowanie szanowany od api, więc nie jestem pewien, aby zaufać ponownie na api bez udokumentowanej funkcji :-( Więc Pierwsze ByteArray (jak moje codeample powyżej) powinno być najbezpieczniejszym sposobem? –
@BoasEnkler: Klient isn Kodowanie pochodzi z * body * - powinno być określone w * nagłówkach *, ale jak już powiedziałem, bezpieczniejszym sposobem jest pobranie go jako bajtów i przeanalizowanie go tylko z danych binarnych. 'MemoryStream' do owijania tablicy bajtów.) –
ok, że to najlepsze rozwiązanie. Kris polecił również to samo hing :) –