#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 следовать этому перенаправлению и возвращать ответ с фактической желаемой конечной точки. Вы можете указать количество перенаправлений, за которыми он будет следовать, если потребуется