cUrl PHP Получить запрос, возвращающий 400 BAD REQUEST, но работает в Почтальоне - PullRequest
0 голосов
/ 23 января 2020

У меня есть простой вызов API, который принимает параметры в URL и отправляет маркер носителя в заголовке. Я распечатал URL-адрес и вставил его в Postman с приложенным токеном на предъявителя, и он работает, но из PHP я получаю ошибку 400 Bad Request. Вот код:

    $ch = curl_init();
    $authorization = 'Authorization: Bearer oireuoijgosrhj9r9regjoregojgjoislgfjs';
    $validate_url = 'https://api.mycustomapi.com/api/envelopes/validate/' . $auth_id .'/' . $content_hash . '/' . $envelope_id;
    curl_setopt($ch, CURLOPT_URL, $validate_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($authorization ));
    $response = curl_exec($ch);
    $json = json_decode($response, true);
    $sigVer = $json['signatureVerified'];
    // Check HTTP status code
    if (!curl_errno($ch)) {
        switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
            case 200:  # OK
                echo 'response is: ', $sigVer, "\n";
                break;
            case 502:  # server error
                system_message('Received 500 Error from Server');
                break;
            case 400:  # bad request
                echo 'url is: ', $validate_url, "\n";
                system_message('Simple validation must have exactly one content item');
                break;
            default:
                 echo 'Unexpected HTTP code: ', $validate_url, "\n";
        }
    }
    curl_close($ch);

В Почтальоне я получаю ожидаемый ответ ... не уверен, почему cUrl Php действует по-другому.

'validate_url' оценивается как: https://api.myapiservice.com/api/envelopes/validate/auth0 | 5e17f7e988b0e90e9bdf2e12 / 6767b1944f523e790c8badf608de140599a424d174a2cad87859a7093aba039f7dc2baaab9f114bf371828364636ec654e1be6aff55e7f65140e24bbbf1a3a7e / 140

1010 * при использовании этого URL в почтальона я получаю следующий json ответ:
{
    "errorCode": 0,
    "errorMessage": null,
    "envelopeId": 140,
    "blockchainAddress": "0xA300991F77519B5f30552F74779eeEdE398fA59e",
    "clientData": "",
    "signatureVerified": true
}

Единственная установка в почтальона Я настройка - это токен авторизации, установленный на тот же токен в моем запросе cUrl. Однако в этом сообщении я не использовал свой настоящий токен или URL-адрес API.

Если я выполняю

var_dump($response);
die();

Все, что я выводю на экран, это строка

(800) «HTTP-статус 400 - неверный запрос»

1 Ответ

0 голосов
/ 23 января 2020

Разобрался, в чем проблема. Просто одна из переменных, которые я вставлял в строку 'validate_url', не кодировалась в urlen-коде, и, поскольку часть этой переменной имеет символ '/', это интерпретировалось как неверный запрос.

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