Вызов API Почтальона не работает при экспорте и запуске в PHP cURL - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь создать вызов API для получения токена доступа. Мой звонок работает как надо в почтальоне. Ниже приводится извлеченная коллекция.

{
    "info": {
        "_postman_id": "1861078c-8a9a-49a2-8a4b-88591ca750a8",
        "name": "asdf",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
        {
            "name": "asdf Access Token Generation",
            "request": {
                "auth": {
                    "type": "basic",
                    "basic": [
                        {
                            "key": "password",
                            "value": "asd",
                            "type": "string"
                        },
                        {
                            "key": "username",
                            "value": "asd",
                            "type": "string"
                        }
                    ]
                },
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "name": "Content-Type",
                        "value": "application/x-www-form-urlencoded",
                        "type": "text"
                    },
                    {
                        "warning": "This is a duplicate header and will be overridden by the Authorization header generated by Postman.",
                        "key": "Authorization",
                        "value": "Basic",
                        "type": "text"
                    },
                    {
                        "key": "grant_type",
                        "value": "client_credentials",
                        "type": "text"
                    }
                ],
                "body": {
                    "mode": "urlencoded",
                    "urlencoded": [
                        {
                            "key": "grant_type",
                            "value": "client_credentials",
                            "type": "text"
                        }
                    ]
                },
                "url": {
                    "raw": "https://uatopenapi.abc.com:8243/token",
                    "protocol": "https",
                    "host": [
                        "uatopenapi",
                        "abc",
                        "com"
                    ],
                    "port": "8243",
                    "path": [
                        "token"
                    ]
                }
            },
            "response": []
        }
    ]
}

Я сгенерировал следующий код, используя Почтальон. (Я действительно сделал много твиков, но ни один из них не был бы полезен, так как основной код не работает в первую очередь. Я показываю код, сгенерированный почтальоном, для удобного понимания моей проблемы.

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_PORT => "8243",
  CURLOPT_URL => "https://uatopenapi.abc.com:8243/token",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "grant_type=client_credentials",
  CURLOPT_HTTPHEADER => array(
    "Accept: */*",
    "Authorization: Basic YXNkOmFzZA==",
    "Cache-Control: no-cache",
    "Connection: keep-alive",
    "Content-Type: application/x-www-form-urlencoded",
    "Host: uatopenapi.abc.com:8243",
    "Postman-Token: 1e4bc145-76c9-40d4-bd80-c23af17fa8a4,b1c0e5ce-2142-40f3-a378-d536acd24d2e",
    "User-Agent: PostmanRuntime/7.13.0",
    "accept-encoding: gzip, deflate",
    "cache-control: no-cache",
    "content-length: 29"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

Ошибка, которую я получаю из сценария php: cURL Ошибка #: Не удалось подключиться к порту uatopenapi.abc.com 8243: Соединение отклонено

API требует, чтобы учетные данные были закодированы base64. В живом скрипте я удаляю все токены почтальона и другие метаданные. Я не могу понять, почему одна и та же коллекция почтальонов не выдает ошибку, когда я экспортирую и запускаю ее как скрипт php.

Я попытался удалить значения метаданных почтальона, удалить номер порта, заменить тип запроса на CURLOPT_POST => true и добавить CURLOPT_SSL_VERIFYPEER => false

1 Ответ

1 голос
/ 27 июня 2019

Я бы посоветовал вам попытаться удалить любой параметр длины контента, токен почтальона, параметр cookie, сгенерированный из генератора кода в Postman, и он должен работать как отдельный запрос.Это начало.Также проверьте, требуется ли вам какой-либо сертификат .PEM для аутентификации SSL.

Удалить

"Postman-Token: 1e4bc145-76c9-40d4-bd80-c23af17fa8a4,b1c0e5ce-2142-40f3-a378-d536acd24d2e"
"content-length: 29"
"User-Agent: PostmanRuntime/7.13.0",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...