web-dev-qa-db-fra.com

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

Est-ce que je peux appeler curl_setopt avec 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);
64
hakre

Après ce que curl fait en interne pour la requête (via la méthode décrite dans cette réponse à "," Php - Debugging Curl " ) répond la question: non, il n'est pas possible d'utiliser le curl_setopt appeler avec CURLOPT_HTTPHEADER. Le deuxième appel écrasera les en-têtes du premier appel.

Au lieu de cela, la fonction doit être appelée une 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:

97
hakre

Autre type de format:

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

curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
10
Pascual Muñoz