接受编码GZIP Http客户端加扰响应



我发出了一个HttpClient请求,得到了Status 200和一个正常的XML响应,但我没有使用AWAIT,我在方法的末尾放了一个.Result。现在,我开始收到状态为200的响应,但内容是加扰的、编码的(例如:"\u\b\0\0\0\n"(。有人知道如何告诉我如何解决这个问题吗?

因为我无法将答案转换为我想要的对象。

using (var requisicao = new HttpClient())
{
requisicao.DefaultRequestHeaders.Add("Authorization", $"Bearer {V.P014_ClienteKey}");
requisicao.DefaultRequestHeaders.Add("X-Authorization-Raw-Data", V.P014_ClienteFraseCriptografia);
requisicao.DefaultRequestHeaders.Add("X-Authorization-Encrypted-Data", "3241880a48c0c26733168cfd558a5bdfbd54a3079a77871065f2c32ac107356f3d77bd14488c669c26380953a1d3df40f7c2cc4ff67d73f65ec71ab4b5769a69");
requisicao.DefaultRequestHeaders.Add("Accept-Encoding", "gzip");
var resposta = requisicao.GetAsync($"https://conciliation.stone.com.br/v1/merchant/{V.P014_CodigoCliente}/conciliation-file/{DataRef}").Result;
if (resposta.StatusCode == HttpStatusCode.OK)
{
XmlSerializer serializer = new XmlSerializer(typeof(BonzayBO.DTO.Conciliacao.Stone.Conciliation));
using (TextReader reader = new StringReader(resposta.Content.ReadAsStringAsync().Result))
{
var result = (BonzayBO.DTO.Conciliacao.Stone.Conciliation)serializer.Deserialize(reader);
XmlDocument XML = new XmlDocument();
XML.LoadXml(resposta.Content.ReadAsStringAsync().Result);
}
}
}

您可以使用下面的代码进行Accept Encoding;

using (var client = new HttpClient( new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
}))
{
client.BaseAddress = new Uri("https://conciliation.stone.com.br");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync($"/v1/merchant/{V.P014_CodigoCliente}/conciliation-file/{DataRef}");

if (!response.IsSuccessStatusCode) // or response.EnsureSuccessStatusCode
{
return null;
}
// deserialize operation
return ...
}

最新更新