PHP cURL не отправляет заголовки (?)

#php #curl #header

#php #curl #заголовок

Вопрос:

Я попытался изменить код, который я нашел на этой веб-странице: https://tutorialsclass.com/php-rest-api-get-data-using-curl /

API, который я использую, нуждается в двух пользовательских заголовках: Accept-Encodig и x-api-key.

Мой измененный код выглядит следующим образом:

 $curl_handle = curl_init();

$url = "http://thelinktomyAPI";

$headers = array(
            'Accept-Encoding: application/json',
            'Content-Type: application/json',
            'x-api-key: MyLongAPIKey'
            );

// Set the curl URL option
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_handle, CURLOPT_HEADER, true);
curl_setopt($curl_handle, CURLOPT_ENCODING, 'application/json');


// This option will return data as a string instead of direct output
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);

$curl_data = curl_exec($curl_handle);

if ($curl_data === false)
{
    print_r('Curl error: ' . curl_error($curl_handle));
}

curl_close($curl_handle);
print_r($curl_data);
 

Итак, как вы можете видеть, я делаю свои заголовки видимыми, чтобы убедиться, что я действительно их отправляю. То, что мне показывают, — это веб-страница со следующим:

  HTTP/1.1 302 Moved Temporarily Date: Thu, 02 Dec 2021 08:09:59 GMT
 Content-Type: text/html Content-Length: 110 
 Connection: keep-alive
 Location: http://thelinktomyAPI 
 X-Trace-ID:f306fe34-079b-493c-b5db-073e792ec2a1 
 X-Kong-Response-Latency: 0
 Server: kong/2.3.3 302 Found
 

Поскольку тип содержимого отображается как «text / html», это наводит меня на мысль, что мои заголовки вообще не отправляются, поэтому я не получаю никаких данных. Я был бы признателен за любую помощь.

Редактировать Добавление curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true); , как предложил профессор Абронсиус, помогло!

Комментарии:

1. попробуйте добавить другую опцию в конфигурацию curl — CURLOPT_FOLLOWLOCATION и установите true

2. @ProfessorAbronsius Это помогло! Я не понимаю, почему, но мой разум взорван, и я просто так счастлив, что теперь я действительно могу написать приложение (поскольку я, наконец, получаю данные). Большое вам спасибо!

3. 302 ответ означает, что ресурс находится в другом месте, поэтому вы указываете curl следовать этому перенаправлению и возвращать ответ с фактической желаемой конечной точки. Вы можете указать количество перенаправлений, за которыми он будет следовать, если потребуется