Ответ HttpClient возвращает зашифрованные данные - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь получить правильный JSON ответ от этого URL-адреса с помощью HttpClient. Когда я просматриваю URL-адрес в Chrome, данные имеют правильный формат 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;

        }

1 Ответ

0 голосов
/ 03 августа 2020

Данные возвращаются сжатыми с помощью gzip. Вы можете сделать так, чтобы ваш HttpClient автоматически распаковывал эти данные, включив это свойство при создании экземпляра вашего HttpClient:

    private static readonly HttpClient httpClient = new HttpClient(new HttpClientHandler
    {
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
    });
...