Я пытаюсь создать вызов 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