내가 전화를 할 수 curl_setopt
와 CURLOPT_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);
관련 (그러나 다른) 질문은 다음과 같습니다.
- curl 호출을 통해 HTTP 요청을 사용하여 헤더를 보내는 방법은 무엇입니까? (명령 줄에서 컬)
- curl_setopt ()로 이전에 설정 한 옵션을 얻는 방법은 무엇입니까? (컬 PHP 확장)
답변
다른 유형의 형식 :
$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";
}
}