Асинхронная отправка GET запроса, вывод ответа в консоль

Асинхронно отправляю некоторое количество запросов.

using var client = new HttpClient();
var tasks = pairs.Select(pair => client.GetAsync(BinanceApi._depth_string_request(pair)));
await Task.WhenAll(tasks);

Как вывести в консоль ответы на все эти запросы?


Ответы (1 шт):

Автор решения: Exploding Kitten

Метод GetAsync возвращает типизированные объекты (Task), т.е. передавая эти таски в WhenAll, он автоматически распакует результаты выполнения, в вашем случае HttpResponseMessage, а уже из него вы можете получать все что вам нужно, контент, статус код и т.д., например:

var pairs = new string[] { "1", "2", "3" };
using var client = new HttpClient();
var tasks = pairs.Select(pair => client.GetAsync($"https://postman-echo.com/get?foo={pair}"));
var results = await Task.WhenAll(tasks);
foreach (var result in results)
    Console.WriteLine(await result.Content.ReadAsStringAsync());

Если вам не нужен HttpResponseMessage, а просто результат, то можно попробовать GetStringAsync метод, который сразу возвращает строку (MSDN).

→ Ссылка