REST-полное соединение, использующее проблемы заголовка cURL - PullRequest
3 голосов
/ 23 марта 2012

Я потратил много времени на устранение неполадок, используя документацию PHP, документацию по API, а также другие публикации по stackoverflow, и, наконец, прошу помощи.

Я пытаюсь написать интерфейс с использованием нового API pbSmartConnections: Документация API

У меня были проблемы с fsockopen и cURL, однако я, кажется, могу продвинуться дальше в процессе, использующем cURL, так что это то, что я представляю здесь. Вот вызов:

В соответствии с моим пониманием документации, я должен передавать ApiKey как часть заголовка. Когда я делаю это, независимо от различных способов структурирования кода, я ВСЕГДА получаю следующий ответ:

{
    "ErrorCode": 10,
    "Message": "Unauthorized"
}

Я надеюсь, что другой член SO сможет увидеть что-то в моем коде ниже (пожалуйста, также предлагайте любую критику и / или предложения!): (ПРИМЕЧАНИЕ. Ключ API ниже действителен. Он подключен к учетной записи, в которой нет ничего ценного, поэтому не стесняйтесь использовать ее в своем тестировании)

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://rest.pbsyscontrol.com/v1/Ping");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type"=>"application/json", "Accept"=>"application/json", "ApiKey"=>"41460b3f-8f35-4878-b78d-49ca7f29c071"));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
?>

Если вам интересно, хотя я хотел бы, чтобы это работало как часть заголовка, я попытался передать его как часть URL:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://rest.pbsyscontrol.com/v1/Ping?ApiKey=41460b3f-8f35-4878-b78d-49ca7f29c071");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type"=>"application/json", "Accept"=>"application/json", "ApiKey"=>"41460b3f-8f35-4878-b78d-49ca7f29c071"));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
?>

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Я наконец получил ответ от службы поддержки, и они указали, что я использовал неправильный URL-адрес (хотя в настоящее время это URL в их Документации API )

* 1004URL в документации API был их этапом, а не ПРОИЗВОДСТВОМ.Удивительно, что переключение URL на правильный адрес, который они отправили в своем ответе - rest.api.pbsmartconnections.com делает для соединения.Это одно изменение, и все стало работать правильно.

СПАСИБО всем, кто заглянул, и @mvdnes за рекомендации по настройке заголовков.

2 голосов
/ 23 марта 2012

В документации PHP написано:

Массив полей HTTP-заголовков для установки в формате array('Content-type: text/plain', 'Content-length: 100')

Таким образом, вместо этого вы хотите использовать следующую строкуоригинала:

 curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "ApiKey: 41460b3f-8f35-4878-b78d-49ca7f29c071"));

Это, однако, не решает проблему, которая, вероятно, недействительна для ApiKey.

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