Kann ich rufe curl_setopt
mit CURLOPT_HTTPHEADER
mehrfach mehrere Header zu setzen?
$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);
Antworten:
Wenn Sie wissen, was Curl intern für die Anforderung tut (über die in dieser Antwort auf "Php - Debugging Curl" beschriebene Methode ), wird die Frage beantwortet: Nein, es ist nicht möglich, den
curl_setopt
Aufruf mit zu verwendenCURLOPT_HTTPHEADER
. Der zweite Aufruf überschreibt die Header des ersten Aufrufs.Stattdessen muss die Funktion mit allen Headern einmal aufgerufen werden:
$headers = array( 'Content-type: application/xml', 'Authorization: gfhjui', ); curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
Verwandte (aber unterschiedliche) Fragen sind:
quelle
Andere Art von Format:
$headers[] = 'Accept: application/json'; $headers[] = 'Content-Type: application/json'; $headers[] = 'Content-length: 0'; curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
quelle
/** * 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' * ]; */ $i_header = $header; if(is_array($i_header) === true){ $header = []; foreach ($i_header as $param => $value) { $header[] = "$param: $value"; } }
quelle