HTTP-запрос для отправки данных и получения ответа (API) - PullRequest
0 голосов
/ 23 ноября 2018

Я должен сделать вызов API.В документации приведен пример URL-адреса, который я должен использовать для передачи параметров, включая авторизацию, и он выглядит так:

https://.com/create/shipment_?username=your_username_here?password=your_password_here?address=street1?package=t-shirtbox

Но поскольку API использует метод post, я не могу сделать это через http.Я должен сделать фактический почтовый запрос.

Я попробовал curl:

$url = https://.com/create/shipment_?username=your_username_here?password=your_password_here?address=street1?package=t-shirtbox
$username = 'username';
$password = 'password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
$httpCode = curl_getinfo($ch , CURLINFO_HTTP_CODE); 
$response = curl_exec($ch);
if ($response === false) $response = curl_error($ch);
curl_close($ch);

Я получил ответ:

Не авторизован.Этот сервер не может подтвердить, что вы авторизованы для доступа к запрашиваемому документу.Либо вы ввели неверные учетные данные (например, неверный пароль), либо ваш браузер не понимает, как предоставить требуемые учетные данные.

Я пробовал php, и результат тот же.

$options = array(
'http' => array(
    'method'  => 'POST',
    'header'=>  "Content-Type: application/json\r\n" .
        "Accept: application/json\r\n".
        "Authorization: Basic ". base64_encode("username:password") ."\r\n".
        "GEOClient: account/123456\r\n".
        "Content-Length: 0"
)
);

$context     = stream_context_create($options);
$result      = file_get_contents($url, false, $context);

Ответ не авторизован.

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

Я также использовал такие инструменты, как почтальон и пользовательский интерфейс SOAP, чтобы проверить этот URL, но ответтакже не авторизован.

Каков будет подход к выполнению такого запроса и как правильно передать имя пользователя, пароль и все остальные данные, такие как адрес и т. д.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я нашел решение.Похоже, что клиент отправил мне неправильную ссылку.Вот так много часов, чтобы обернуть голову вокруг этого.

0 голосов
/ 23 ноября 2018

Если вы не можете вызвать API-интерфейс как почтальон, вам необходимо выяснить для другой стороны, нужно ли шифровать учетную запись и пароль и установила ли другая сторона ограничения IP.

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