РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
987 of 1361 menu

Класс HttpClient

Класс HttpClient создаёт HTTP-клиент для выполнения запросов к внешним сервисам. Через метод request передаётся HTTP-метод и URL, а через опции задаются заголовки, тело запроса, параметры и таймауты. Клиент возвращает объект ClientResponse с ответом сервера.

Синтаксис

use Symfony\Component\HttpClient\HttpClient; $client = HttpClient::create(); $res = $client->request(method, url, options);

Пример

Давайте создадим клиент и выполним GET-запрос:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; class ApiController extends AbstractController { public function index(): Response { $client = HttpClient::create(); $res = $client->request('GET', 'https://example.com/api'); return new Response($res->getContent()); } } ?>

Пример

Давайте отправим POST-запрос с телом в формате JSON:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; class ApiController extends AbstractController { public function index(): Response { $client = HttpClient::create(); $res = $client->request('POST', 'https://example.com/api', [ 'json' => ['name' => 'abcde'] ]); return new Response($res->getContent()); } } ?>

Пример

Давайте передадим собственные заголовки и прочитаем статус ответа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; class ApiController extends AbstractController { public function index(): Response { $client = HttpClient::create(); $res = $client->request('GET', 'https://example.com/api', [ 'headers' => ['Accept' => 'application/json'] ]); return new Response((string) $res->getStatusCode()); } } ?>

Результат выполнения кода:

"200"

Пример

Давайте создадим клиент через DI-контейнер, внедрив сервис HttpClientInterface:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Contracts\HttpClient\HttpClientInterface; class ApiController extends AbstractController { public function index(HttpClientInterface $client): Response { $res = $client->request('GET', 'https://example.com/api'); return new Response($res->getContent()); } } ?>

Смотрите также

  • метод request,
    который выполняет HTTP-запрос
  • метод stream,
    который отдаёт ответ по частям
  • метод withOptions,
    который задаёт опции по умолчанию
  • класс ClientResponse,
    который представляет ответ сервера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить