我正在尝试使用HttpClient从这个URL获取正确的JSON响应。当我在Chrome中查看URL时,数据是JSON格式的。当我使用HttpClient时,我得到一堆看起来像字节或类似的垃圾数据。我想不出怎么把它解码成一个字符串。请给我建议。
string url = "https://api.nasdaq.com/api/calendar/earnings?date=2010-07-30";
string calendar = await DownloadFile(new string[] { url });
private static readonly HttpClient httpClient = new HttpClient();
public static async Task<string> DownloadFile(string[] args)
{
string url = args[0];
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");
httpClient.DefaultRequestHeaders.Connection.ParseAdd("keep-alive");
string text = await httpClient.GetStringAsync(url);
return text;
}发布于 2020-08-03 13:39:52
数据是用gzip压缩返回的。通过在实例化HttpClient时启用此属性,可以让HttpClient自动解压缩此数据
private static readonly HttpClient httpClient = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
});发布于 2020-09-29 17:08:51
我认为你必须从你的请求头中删除Brotli压缩。Brotli (br)不是由.Net现成解码的。
也就是说,更改:
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");至
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate");https://stackoverflow.com/questions/63224153
复制相似问题