Maison > développement back-end > tutoriel php > Comment gérer les erreurs HTTP et récupérer les codes de réponse avec `file_get_contents` et `stream_context_create` ?

Comment gérer les erreurs HTTP et récupérer les codes de réponse avec `file_get_contents` et `stream_context_create` ?

Linda Hamilton
Libérer: 2024-12-02 08:17:10
original
679 Les gens l'ont consulté

How to Handle HTTP Errors and Retrieve Response Codes with `file_get_contents` and `stream_context_create`?

Code de réponse HTTP avec file_get_contents et stream_context_create

Afin d'effectuer des requêtes POST, vous pouvez utiliser file_get_contents en conjonction avec stream_context_create. Cependant, vous pouvez rencontrer des avertissements lorsque vous rencontrez des erreurs HTTP. Cet article aborde ce problème et propose des solutions pour supprimer les avertissements et obtenir les codes de réponse du flux.

Pour commencer, considérons le scénario suivant :

$options = ['http' => [
    'method' => 'POST',
    'content' => $data,
    'header' => 
        "Content-Type: text/plain\r\n" .
        "Content-Length: " . strlen($data) . "\r\n",
]];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
Copier après la connexion

Ce code gère les requêtes POST, mais en cas d'erreur HTTP, un avertissement s'affiche :

file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
Copier après la connexion

De plus, il renvoie false. Deux problèmes découlent de ce problème :

  1. Puis-je empêcher l'apparition de l'avertissement ?
  2. Est-il possible de récupérer les détails de l'erreur, notamment les codes de réponse, à partir du flux ?

Suppression de l'avertissement

Pour supprimer l'avertissement, nous pouvons utiliser l'ignore_errors option dans stream_context_create() :

$context = stream_context_create(['http' => ['ignore_errors' => true]]);
Copier après la connexion

Avec cette modification, l'avertissement ne sera plus affiché.

Obtention des codes de réponse

Pour obtenir le code de réponse du flux, vous pouvez inspecter la variable http_response_header :

$context = stream_context_create(['http' => ['ignore_errors' => true]]);
$result = file_get_contents("http://example.com", false, $context);
var_dump($http_response_header);
Copier après la connexion

Ce code affichera un tableau contenant les en-têtes de réponse, y compris le code de réponse.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal