簡體   English   中英

我可以使用 CURLOPT_HTTPHEADER 多次調用 curl_setopt 來設置多個標頭嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM