Maison >développement back-end >tutoriel php >Bibliothèque client HTTP en PHP8.0

Bibliothèque client HTTP en PHP8.0

WBOY
WBOYoriginal
2023-05-14 08:51:401748parcourir

Bibliothèque client HTTP dans PHP8.0

La version de PHP8.0 apporte de nombreuses nouvelles fonctionnalités et améliorations, l'une des plus notables est la bibliothèque client HTTP intégrée. Cette bibliothèque fournit un moyen simple d'envoyer des requêtes HTTP et de gérer les réponses renvoyées. Dans cet article, nous explorerons les principales fonctionnalités et utilisations de cette bibliothèque.

Envoyer une requête HTTP

L'envoi de requêtes HTTP est très simple grâce à la bibliothèque client HTTP intégrée de PHP8.0. Dans cet exemple, nous utiliserons la méthode GET pour obtenir la page d'accueil de ce site :

use HttpClientExceptionHttpException;
use HttpClientHttpClient;
use HttpMessageRequestFactory;
use HttpMessageStreamFactory;

require_once "vendor/autoload.php";

// Create the client
$httpClient = HttpClientDiscovery::find();

// Create the request
$requestFactory = new RequestFactory();
$request = $requestFactory->createRequest(
    'GET',
    'http://example.com'
);

// Send the request and wait for the response
try {
    $response = $httpClient->sendRequest($request);
} catch (HttpException $e) {
    echo 'Error: ' . $e->getMessage();
    exit;
}

// Print the response body
$body = (string) $response->getBody();
echo $body;

Dans cet exemple, nous utilisons d'abord la méthode de classe factory HttpClientDiscovery::find() pour créer un client HTTP. Ensuite, utilisez la méthode RequestFactory::createRequest() pour créer une requête HTTP, en spécifiant la méthode de requête et l'URL de la requête. Enfin, utilisez la méthode HttpClient::sendRequest() pour envoyer la requête et attendez la réponse. Si la requête ne parvient pas à être envoyée, une exception HttpException sera levée. HttpClientDiscovery::find()创建一个HTTP客户端。然后,使用RequestFactory::createRequest()方法创建一个HTTP请求,指定请求方法和请求URL。最后,使用HttpClient::sendRequest()方法发送请求,并等待响应。如果请求发送失败,则会引发HttpException异常。

处理响应

在接收到响应后,我们可以使用HTTP响应对象来访问响应状态、响应头和响应体。在下面的代码中,我们将打印一个表示响应状态、响应头和响应体的字符串。

use HttpMessageResponseFactory;

$responseFactory = new ResponseFactory();
$status = $response->getStatusCode();
$headers = $response->getHeaders();
$body = (string) $response->getBody();

$responseString = sprintf(
    "HTTP/%s %s
%s

%s",
    $response->getProtocolVersion(),
    $status,
    implode("
", $headers),
    $body
);

echo $responseString;

这里,我们使用ResponseFactory::createResponse()方法创建一个HTTP响应对象。然后,使用ResponseInterface接口提供的方法来访问响应状态、响应头和响应体。最后,我们将响应组合成一个字符串,然后在屏幕上打印出来。

处理响应体

当我们发送HTTP请求并从服务器接收到响应时,我们也可以处理响应体。让我们看一下,如何处理JSON响应体:

use HttpMessageJsonResponseFactory;

$responseFactory = new JsonResponseFactory();
$decoded = $responseFactory->createResponse($response)->getPayload();

echo 'The decoded response is:' . PHP_EOL;
print_r($decoded);

在这个例子中,我们使用JsonResponseFactory::createResponse()方法创建一个JSON格式的HTTP响应对象。然后,使用JsonResponseInterface接口提供的getPayload()方法来解码JSON响应体。最后,我们将解码后的响应体打印到控制台上。

处理异常

在使用HTTP客户端库时,有时请求可能会失败,这可能是因为网络连接错误或服务器故障。当这种情况发生时,HTTP客户端库将引发一个HttpException

Traitement de la réponse

Après avoir reçu la réponse, nous pouvons utiliser l'objet de réponse HTTP pour accéder à l'état de la réponse, aux en-têtes de réponse et au corps de la réponse. Dans le code ci-dessous, nous imprimerons une chaîne représentant l'état de la réponse, les en-têtes de réponse et le corps de la réponse.

use HttpClientExceptionHttpException;

// ...

try {
    $response = $httpClient->sendRequest($request);
} catch (HttpException $e) {
    echo 'Error: ' . $e->getMessage();
    exit;
}

Ici, nous utilisons la méthode ResponseFactory::createResponse() pour créer un objet de réponse HTTP. Utilisez ensuite les méthodes fournies par l'interface ResponseInterface pour accéder à l'état de la réponse, aux en-têtes de réponse et au corps de la réponse. Enfin, nous combinons la réponse dans une chaîne et l'imprimons à l'écran.

Gérer le corps de la réponse #🎜🎜##🎜🎜#Lorsque nous envoyons une requête HTTP et recevons une réponse du serveur, nous pouvons également traiter le corps de la réponse. Voyons comment traiter le corps de la réponse JSON : #🎜🎜#rrreee#🎜🎜#Dans cet exemple, nous utilisons la méthode JsonResponseFactory::createResponse() pour créer un HTTP au format JSON. objet de réponse. Ensuite, utilisez la méthode getPayload() fournie par l'interface JsonResponseInterface pour décoder le corps de la réponse JSON. Enfin, nous imprimons le corps de la réponse décodée sur la console. #🎜🎜##🎜🎜#Gestion des exceptions#🎜🎜##🎜🎜#Lors de l'utilisation de la bibliothèque client HTTP, les requêtes peuvent parfois échouer, probablement en raison d'erreurs de connexion réseau ou de pannes de serveur. Lorsque cela se produit, la bibliothèque client HTTP lèvera une exception HttpException. Dans l'extrait de code suivant, nous allons détecter cette exception et imprimer le message d'erreur. #🎜🎜#rrreee#🎜🎜#Si une exception se produit, un message d'erreur s'affichera et le programme se fermera. Cela nous permet de prendre les mesures appropriées si une demande échoue, comme imprimer un message d'erreur ou réessayer la demande. #🎜🎜##🎜🎜#Conclusion#🎜🎜##🎜🎜#La bibliothèque client HTTP est une nouvelle fonctionnalité importante de PHP8.0. Il fournit un moyen puissant d'envoyer des requêtes HTTP et de gérer les réponses. Dans cet article, nous avons présenté les principales fonctions et utilisations de la bibliothèque client HTTP, notamment l'envoi de requêtes HTTP, le traitement des réponses, le traitement des corps de réponse et la gestion des exceptions. Nous pouvons désormais utiliser la bibliothèque client HTTP dans notre application PHP. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn