Класс ClientResponse
Класс ClientResponse представляет собой ответ,
полученный в результате выполнения HTTP-запроса через
HttpClient. Объект этого класса возвращается
методами request и stream. Он позволяет
получить статус-код ответа, содержимое, заголовки,
а также преобразовать ответ в массив или поток.
Класс реализует интерфейсы ResponseInterface
и StreamableInterface. Основные методы:
getStatusCode, getContent,
toArray, getHeaders,
getInfo, toStream, cancel.
Синтаксис
use SymfonyContractsHttpClientResponseInterface;
use SymfonyComponentHttpClientResponseClientResponse;
Пример
Давайте выполним GET-запрос и получим объект
ClientResponse:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyContractsHttpClientHttpClientInterface;
class ArticleController extends AbstractController
{
public function index(HttpClientInterface $client): Response
{
$res = $client->request('GET', 'https://example.com/api/article');
return new Response($res->getContent());
}
}
?>
Результат выполнения кода:
"article content"
Пример
Давайте получим статус-код ответа через метод
getStatusCode:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyContractsHttpClientHttpClientInterface;
class ArticleController extends AbstractController
{
public function index(HttpClientInterface $client): Response
{
$res = $client->request('GET', 'https://example.com/api/article');
return new Response($res->getStatusCode());
}
}
?>
Результат выполнения кода:
200
Пример
Давайте преобразуем JSON-ответ в массив через метод
toArray:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyContractsHttpClientHttpClientInterface;
class ArticleController extends AbstractController
{
public function index(HttpClientInterface $client): Response
{
$res = $client->request('GET', 'https://example.com/api/articles');
$data = $res->toArray();
return new Response($data['title']);
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте получим заголовки ответа через метод
getHeaders:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyContractsHttpClientHttpClientInterface;
class ArticleController extends AbstractController
{
public function index(HttpClientInterface $client): Response
{
$res = $client->request('GET', 'https://example.com/api/article');
$headers = $res->getHeaders();
return new Response($headers['content-type'][0]);
}
}
?>
Результат выполнения кода:
"application/json"
Смотрите также
-
класс
HttpClient,
который выполняет HTTP-запросы -
метод
request,
который отправляет запрос и возвращает ответ -
метод
getStatusCode,
который возвращает статус-код ответа -
метод
toArray,
который преобразует JSON-ответ в массив