首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HttpClient响应返回加扰数据

HttpClient响应返回加扰数据
EN

Stack Overflow用户
提问于 2020-08-03 13:25:28
回答 2查看 148关注 0票数 1

我正在尝试使用HttpClient从这个URL获取正确的JSON响应。当我在Chrome中查看URL时,数据是JSON格式的。当我使用HttpClient时,我得到一堆看起来像字节或类似的垃圾数据。我想不出怎么把它解码成一个字符串。请给我建议。

代码语言:javascript
运行
复制
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;

        }
EN

回答 2

Stack Overflow用户

发布于 2020-08-03 13:39:52

数据是用gzip压缩返回的。通过在实例化HttpClient时启用此属性,可以让HttpClient自动解压缩此数据

代码语言:javascript
运行
复制
    private static readonly HttpClient httpClient = new HttpClient(new HttpClientHandler
    {
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
    });
票数 3
EN

Stack Overflow用户

发布于 2020-09-29 17:08:51

我认为你必须从你的请求头中删除Brotli压缩。Brotli (br)不是由.Net现成解码的。

也就是说,更改:

代码语言:javascript
运行
复制
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");

代码语言:javascript
运行
复制
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63224153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档