PHP Curl неправильные заголовки? - PullRequest
0 голосов
/ 25 сентября 2018

Я отправляю контент из скрипта PHP Curl в API.Я использую это, чтобы сделать POST сделать мой скрипт при передаче заголовков json

 $query = new stdClass; 
 $query->test = 'test';
 $query = json_encode($query);
 $ch = curl_init();         
 curl_setopt($ch, CURLOPT_URL, 'http://localhost');
 curl_setopt($ch, CURLOPT_HEADER, ['Content-Type: application/json', 'Content-Length: '.strlen($query)]);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
 curl_setopt($ch, CURLOPT_VERBOSE, true);               
 $res = curl_exec($ch);
 curl_close($ch);  

Но когда я прослеживаю тип содержимого запроса на стороне API, я получаю

 var_dump($_SERVER['CONTENT_TYPE']);
 //application/x-www-form-urlencoded

Разве я не должен получить это вместо этого?

 application/json 

1 Ответ

0 голосов
/ 25 сентября 2018

Вы должны использовать CURLOPT_HTTPHEADER вместо CURLOPT_HEADER

CURLOPT_HEADER может быть true / false и определять, включать ли заголовок в ответ или нет

FYI:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); Эти строки являются избыточными, так как вы не используете https

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...