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

Метод stream класса HttpClient

Метод stream класса HttpClient выполняет HTTP-запрос и возвращает ответ в виде потока. В отличие от метода request, который загружает всё содержимое ответа в память, stream отдаёт данные частями по мере чтения. Первым параметром передаётся HTTP-метод, вторым - URL адрес, третьим - массив опций запроса.

Синтаксис

public function stream(string $method, string $url, array $options = []): ResponseInterface

Пример

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

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpClientHttpClient; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $client = HttpClient::create(); $response = $client->stream('GET', 'https://example.com/data'); $content = ''; foreach ($client->stream($response) as $chunk) { $content .= $chunk->getContent(); } return new Response($content); } } ?>

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

"page found"

Пример

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

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpClientHttpClient; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/user', name: 'article_user')] public function user(): Response { $client = HttpClient::create(); $response = $client->stream('POST', 'https://example.com/user', [ 'body' => ['name' => 'abcde'] ]); foreach ($client->stream($response) as $chunk) { if ($chunk->isFirst()) { echo $chunk->getStatusCode(); } } return new Response('hello'); } } ?>

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

"hello"

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

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