84 votes

Puis-je appeler curl_setopt avec CURLOPT_HTTPHEADER plusieurs fois pour définir plusieurs en-têtes ?

Puis-je appeler curl_setopt con CURLOPT_HTTPHEADER plusieurs fois pour définir plusieurs en-têtes ?

$url = 'http://www.example.com/';

$curlHandle = curl_init($url);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-type: application/xml'));
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Authorization: gfhjui'));

$execResult = curl_exec($curlHandle);

135voto

hakre Points 102271

Suivant ce que curl fait en interne pour la requête (via la méthode décrite dans cette réponse à "Php - Déboguer Curl" ) répond à la question : Non .

Non, il n'est pas possible d'utiliser le curl_setopt appeler avec CURLOPT_HTTPHEADER plus d'une fois, en lui passant un seul en-tête à chaque fois, afin de définir plusieurs en-têtes.

Un deuxième appel écrasera les en-têtes d'un appel précédent (par exemple du premier appel).

Au lieu de cela, la fonction doit être appelée une seule fois avec tous les en-têtes :

$headers = array(
    'Content-type: application/xml',
    'Authorization: gfhjui',
);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);

Les questions connexes (mais différentes) sont les suivantes :

14voto

Pascual Muñoz Points 129

Autre type de format :

$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Content-length: 0';

curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);

0voto

Tesla Points 21
/**
 * If $header is an array of headers
 * It will format and return the correct $header
 * $header = [
 *  'Accept' => 'application/json',
 *  'Content-Type' => 'application/x-www-form-urlencoded'
 * ];
 */
$header; //**
if (is_array($header)) {
    $i_header = $header;
    $header = [];
    foreach ($i_header as $param => $value) {
        $header[] = "$param: $value";
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X