[php] CURLOPT_HTTPHEADER로 curl_setopt를 여러 번 호출하여 여러 헤더를 설정할 수 있습니까?

내가 전화를 할 수 curl_setoptCURLOPT_HTTPHEADER여러 헤더를 설정하기 위해 여러 번?

$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);



답변

컬이 (에 설명 된 방법을 통해 요청에 대해 내부적으로 무엇을하는지에 따라 이 답 “PHP – 디버깅 컬은” ) 질문에 대한 답 : 아니오, 사용할 수 없습니다 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";
    }
}


답변