интеграция с api php curl

#php #api #curl #http-headers

#php #API #curl #http-заголовки

Вопрос:

Я пытаюсь интегрировать API, и в инструкциях по интеграции API показано следующее:

 GET /offers.json or /offers.xml
Headers: API-KEY={your_key}, API-LOGIN={your_login}
 

Пример CURL:

 curl https://api.thewebsite.com/v1/offers.json -H 'API-KEY:
1a2b3c4d5e6f7g8h9i' -H 'API-LOGIN: 1a2b3c4d5e6f7g8h9i'
 

Я безуспешно пытался использовать приведенный ниже код cURL. Что касается метода GET, я не уверен, как передать КЛЮЧ API и ЛОГИН API в качестве заголовков.

 $header = array('Content-Type: application/xml', 'API-KEY=1a2b3c4d5e6f7g8h9i', 'API-LOGIN=1a2b3c4d5e6f7g8h9i');
$url = "https://api.thewebsite.com/v1/offers.xml";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
$xml = curl_exec($curl);
curl_close($curl);

print $xml;
 

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

1. Что происходит, когда вы выполняете этот сценарий curl?

2. Я получал недопустимую ошибку ключа API, которая была бы связана с использованием =, а не :, как указала Кайвосукелтайя.

Ответ №1:

Заголовки HTTP должны указываться с использованием двоеточия в качестве разделителя между ключом и значением, а не знака равенства. Попробуйте это:

 $header = array('Content-Type: application/xml', 'API-KEY: 1a2b3c4d5e6f7g8h9i', 'API-LOGIN: 1a2b3c4d5e6f7g8h9i');
 

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

1. (doh) Я использовал = пытаясь что-то еще и забыл его изменить. Спасибо!

2. Я пытался печатать только детали первого возвращенного предложения. Однако отображается весь XML. Даже если я удалю все вызовы print. ## begin snip ## <?xml version="1.0" encoding="UTF-8"?> <offers type="array"> <offer> <end-date type="datetime">2011-09-22T23:59:59Z</end-date> <details>First offer details here</details> <faq nil="true"></faq> <value type="float">495.0</value> ## end snip ## print $xml->offer[0]->details

Ответ №2:

Вы можете получить некоторую отладочную информацию из curl и посмотреть, что именно у вас не работает:

 print "<pre>n";
print_r(curl_getinfo($curl));  // get error info
echo "nncURL error number:" .curl_errno($curl); // print error info
echo "nncURL error:" . curl_error($ch); 
print "</pre>n";
curl_close($curl); // close curl session
 

Обязательно вызовите его перед закрытием и завершением объекта curl

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

1. Спасибо. Я буду держать его под рукой на будущее.

Ответ №3:

Попробуйте следующее —

 print "<pre>n";
print_r(curl_getinfo($curl));  // get error info
echo "nncURL error number:" .curl_errno($curl); // print error info
echo "nncURL error:" . curl_error($ch); 
print "</pre>n";
curl_close($curl);