¿Puedo llamar curl_setopt
a CURLOPT_HTTPHEADER
varias veces para definir múltiples cabeceras?
$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);
Respuestas:
Siguiendo lo que curl hace internamente para la solicitud (a través del método descrito en esta respuesta a "Php - Debugging Curl" ) responde la pregunta: No, no es posible usar la
curl_setopt
llamada conCURLOPT_HTTPHEADER
. La segunda llamada sobrescribirá los encabezados de la primera llamada.En cambio, la función debe llamarse una vez con todos los encabezados:
$headers = array( 'Content-type: application/xml', 'Authorization: gfhjui', ); curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
Las preguntas relacionadas (pero diferentes) son:
fuente
Otro tipo de formato:
$headers[] = 'Accept: application/json'; $headers[] = 'Content-Type: application/json'; $headers[] = 'Content-length: 0'; curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
fuente
/** * 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"; } }
fuente