Maison >développement back-end >tutoriel php >Comment puis-je extraire les en-têtes et le corps d'une requête cURL en PHP ?

Comment puis-je extraire les en-têtes et le corps d'une requête cURL en PHP ?

DDD
DDDoriginal
2024-12-20 01:07:17438parcourir

How Can I Extract Both Headers and Body from a cURL Request in PHP?

Extraction des en-têtes et du corps des requêtes cURL en PHP

La bibliothèque PHP cURL fournit un moyen pratique d'envoyer des requêtes HTTP. Par défaut, cURL récupère uniquement le corps de la réponse. Cependant, vous pouvez rencontrer des situations dans lesquelles vous devez accéder à la fois aux en-têtes et au corps en une seule requête, sans émettre de requête HEAD distincte.

Solution : séparer les en-têtes et le corps

Pour récupérer les en-têtes et le corps dans une seule requête cURL, vous pouvez utiliser les étapes suivantes :

  1. Exécuter la requête cURL avec curl_exec() avec les options suivantes :

    • CURLOPT_RETURNTRANSFER : défini sur 1 pour renvoyer la réponse sous forme de chaîne.
    • CURLOPT_HEADER : défini sur 1 pour inclure les en-têtes de réponse dans la sortie.
  2. Après avoir exécuté la requête, obtenez la réponse en utilisant $response.
  3. Calculez la taille des en-têtes HTTP à l'aide de curl_getinfo($ch, CURLINFO_HEADER_SIZE) et stockez-la dans $header_size.
  4. Extrayez les en-têtes de $response en prenant la sous-chaîne jusqu'à $header_size. Stockez les en-têtes dans $header.
  5. Extrayez le corps de $response en prenant la sous-chaîne de $header_size jusqu'à la fin de la chaîne. Stockez le corps dans $body.

Exemple de code :

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
// ...

$response = curl_exec($ch);

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);

Remarque : Sachez que cette méthode peut ne pas être fiable dans tous les cas, notamment lorsqu'il s'agit de serveurs proxy ou de certains types de redirections.

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