Estoy consumiendo algunos datos usando la API XML fogbugz. Esta API siempre ofrece datos como UTF-8.Codificación con HttpClient en .NET 4.5
Al utilizar la clase WebClient
para realizar una solicitud, puedo establecer la codificación. Por ejemplo:
var result = new WebClient();
result.Encoding = Encoding.UTF8;
¿Pero qué pasa con la clase HttpClient
?
HttpClient client = new HttpClient();
¿Debo usar:
client.GetByteArrayAsync(url);
... y luego convertir los bytes de la codificación (UTF-8) a una cadena?
¿O hay una manera de obtener directamente el contenido como una cadena UTF-8?
using (var client = Connector.GetHttpClient())
{
var byteData = await client.GetByteArrayAsync(url);
data = Encoding.UTF8.GetString(byteData);
}
Por último, aquí es un extracto de la respuesta XML:
<?xml version="1.0" encoding="UTF-8"?>
<response>
Hola Jon. Thx por su respuesta. La etiqueta de codificación siempre incluye la respuesta. En el caso FogBugz, se define como UTF-8. Aquí un ejemplo de principio de la XML Xml version = "1.0" encoding = "UTF-8"?> .... I se basó en esto con webclient, hay la codificación no era respetado de la API, así que no estoy seguro de volver a confiar en la API sin la característica documentada :-( Por lo tanto, obtener la matriz ByteArray (como mi codesample anterior) debe ser la más segura? –
@BoasEnkler: El cliente no Tomará la codificación del * cuerpo * - debe especificarse en los * encabezados *. Pero como ya he dicho, la forma más segura es buscarla como bytes y analizarla solo a partir de los datos binarios. un 'MemoryStream' para envolver la matriz de bytes.) –
ok, creo que esa es la mejor solución. Kris también recomendó la misma t hing :) –