Sto consumando alcuni dati utilizzando l'API XML fogbugz. Questa API offre sempre i dati come UTF-8.Codifica con HttpClient in .NET 4.5
Quando si utilizza la classe WebClient
per effettuare una richiesta, sono in grado di impostare la codifica. Ad esempio:
var result = new WebClient();
result.Encoding = Encoding.UTF8;
Ma che dire della classe HttpClient
?
HttpClient client = new HttpClient();
meglio utilizzare:
client.GetByteArrayAsync(url);
... e poi convertire i byte dalla codifica (UTF-8) in una stringa?
Oppure c'è un modo per ottenere direttamente il contenuto come una stringa UTF-8?
using (var client = Connector.GetHttpClient())
{
var byteData = await client.GetByteArrayAsync(url);
data = Encoding.UTF8.GetString(byteData);
}
Infine, ecco un estratto dalla risposta XML:
<?xml version="1.0" encoding="UTF-8"?>
<response>
Hi Jon. Grazie per la tua risposta. Il tag di codifica è sempre incluso nella risposta. Nel caso FogBugz è definito essere sempre UTF-8. Ecco un esempio del principio del XML Xml version = "1.0" encoding = "UTF-8"?> .... mi sono affidato a questo con WebClient, c'è la codifica non è stato rispettato dall'api, quindi non mi sento sicuro di fidarmi di nuovo sull'api senza la funzionalità documentata :-( Quindi ottenere il ByteArray (come il mio codice esempio sopra) dovrebbe essere il modo più sicuro? –
@BoasEnkler: il client isn Prenderò la codifica dal * corpo * - dovrebbe essere specificato nelle * intestazioni *. Ma come ho detto, il modo più sicuro è di recuperarlo come byte e analizzarlo solo dai dati binari. un 'MemoryStream' per avvolgere l'array di byte.) –
ok pensa che sia la soluzione migliore. hing :) –