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, чтобы избежать утечек ресурсов.
См. также
- Документация по
HttpClientот Microsoft: https://docs.microsoft.com/ru-ru/dotnet/api/system.net.http.httpclient - Лучшие практики использования HttpClient: https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
- Взаимодействие с RESTful API с
RestSharp: http://restsharp.org/ - Работа с HTTP в стиле Fluent с
Flurl: https://flurl.dev/