Programmation PHP/Symfony/HttpClient
< Programmation PHP | Symfony
Aller à la navigation
Aller à la recherche
Installation[modifier | modifier le wikicode]
Composant pour lancer des requêtes HTTP depuis l'application, avec gestion des timeouts, redirections, cache, protocole et en-tête HTTP. Il est configurable en PHP ou dans framework.yaml.
Depuis Symfony 4[1] :
Terminal

composer require symfony/http-client
Utilisation[modifier | modifier le wikicode]
GET[modifier | modifier le wikicode]
On peut forcer l'utilisation de HTTP 2 à la création :
$httpClient = HttpClient::create(['http_version' => '2.0']);
$response = $httpClient->request('GET', 'https://fr.wikibooks.org/');
if (200 == $response->getStatusCode()) {
dd($response->getContent());
} else {
dd($response->getInfo('error'));
}

POST[modifier | modifier le wikicode]
Exemple en POST avec authentification :
$response = $httpClient->request('POST', 'https://fr.wikibooks.org/w/api.php', [
'auth_bearer' => 'mon_token',
'json' => $keyValuePairs,
]);
Problèmes connus[modifier | modifier le wikicode]
Ce composant est relativement jeune et souffre d'incomplétudes.
- On peut avoir du "null given" à tort sur un mapping DNS, solvable en rajoutant une option :
$options = array_merge($options, [
'resolve' => ['localhost' => '127.0.0.1']
]);
$httpClient->request()
renvoie uneSymfony\Contracts\HttpClient\ResponseInterface
, mais en cas d'erreur, elle ne contient qu'une ligne de résumé, soit moins d'informations qu'un client comme Postman.
Tests[modifier | modifier le wikicode]
Ce composant peut aussi serveur aux tests fonctionnels via PhpUnit. On l'appelle alors avec static::createClient
si le test extends WebTestCase
. Dans le cas d'un projet API Platform, on l'appelle de la même manière mais le test extends ApiTestCase
.