[英]Can I call curl_setopt with CURLOPT_HTTPHEADER multiple times to set multiple headers?
我可以使用CURLOPT_HTTPHEADER
多次调用curl_setopt
来设置多个标头吗?
$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);
遵循 curl 在内部为请求所做的事情(通过“Php - Debugging Curl”的答案中概述的方法)回答了这个问题:不,不能将curl_setopt
调用与CURLOPT_HTTPHEADER
一起使用。 第二个调用将覆盖第一个调用的标头。
相反,该函数需要使用所有标头调用一次:
$headers = array(
'Content-type: application/xml',
'Authorization: gfhjui',
);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
相关(但不同)的问题是:
其他类型的格式:
$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Content-length: 0';
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
/**
* 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";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.