Метод cancel класса ClientResponse
Метод cancel класса ClientResponse прерывает выполнение HTTP-запроса,
который был инициирован через HttpClient. Если запрос ещё не завершён,
он будет отменён, а связанные с ним ресурсы освобождены. Метод не принимает
параметров и не возвращает значения. После вызова cancel дальнейшее
использование объекта ClientResponse для получения содержимого ответа
может привести к исключению.
Синтаксис
$clientResponse->cancel();
Пример
Давайте создадим HTTP-запрос и отменим его до получения ответа:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$client = HttpClient::create();
$clientResponse = $client->request('GET', 'https://example.com');
$clientResponse->cancel();
return new Response('Request was cancelled');
}
}
?>
Результат выполнения кода:
"Request was cancelled"
Пример
Давайте проверим статус запроса после отмены:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/status', name: 'article_status')]
public function status(): Response
{
$client = HttpClient::create();
$clientResponse = $client->request('GET', 'https://example.com');
$clientResponse->cancel();
try {
$statusCode = $clientResponse->getStatusCode();
$res = 'Status: ' . $statusCode;
} catch (\Throwable $e) {
$res = 'Request cancelled: ' . $e->getMessage();
}
return new Response($res);
}
}
?>
Результат выполнения кода:
"Request cancelled: ..."
Смотрите также
-
класс
ClientResponse,
который представляет ответ HTTP-клиента -
метод
getStatusCode,
который возвращает код состояния ответа -
метод
getContent,
который возвращает содержимое ответа -
класс
HttpClient,
который выполняет HTTP-запросы