Отправка HTTP-запроса

C#:
Отправка HTTP-запроса

Как это сделать:

C# упрощает отправку HTTP-запросов с помощью HttpClient. Вот каркас GET-запроса:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using HttpClient client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync("http://example.com");
        response.EnsureSuccessStatusCode();
        string responseBody = await response.Content.ReadAsStringAsync();
        
        Console.WriteLine(responseBody);
    }
}

Пример вывода (усечен):

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
...

Глубокое погружение

HttpClient был введен в .NET Framework 4.5, чтобы упростить HTTP-общение. До этого скорее всего приходилось работать с классами HttpWebRequest и HttpWebResponse, которые были более громоздкими.

Есть и другие способы отправки HTTP-запросов в C#. RestSharp и Flurl это две популярные сторонние библиотеки, предлагающие более плавный интерфейс и дополнительные функции. Но HttpClient обычно более чем достаточен для большинства нужд.

С точки зрения реализации, HttpClient разработан для повторного использования для множества запросов. Создание его экземпляра для каждого запроса может исчерпать количество доступных сокетов при интенсивной загрузке. Всегда, и я подчеркиваю, всегда обращайте внимание на правильное уничтожение экземпляров HttpClient, чтобы избежать утечек ресурсов.

См. также