Команда curl работает без сбоев, но, превратив ее в php и запустив, я получил «500 внутренних ошибок при подаче» - PullRequest
0 голосов
/ 12 апреля 2019

Впервые до curl, и я пытаюсь запустить его в php.Но работа в php сталкивает меня с 500 internal server error.Перепробовал много методов, поэтому смиренно любил бы несколько советов.

Текущий curl cmd:

curl -X POST https://www.dbs.com/sandbox/api/sg/v1/oauth/authorize --header "Content-Type:application/json" --header "clientId:clientId3" -d '{ "client_id":"demo", "client_assertion":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJEQlMiLCJpYXQiOjE1NTUwNTg0OTYsImV4cCI6MTU1NTE0NDg5Niwic3ViIjoiSnd0IFNpZ25lZCBUb2tlbiBmb3IgRGVtZSBBcHAgUGFydG5lciBUb2tlbiBmbG93IiwiUEFSVFlfVFlQRSI6MywiQ0xJRU5UX0lEIjoiY2xpZW50SWQzIiwiQ0xJRU5UX1RZUEUiOiJQYXJ0bmVyIiwiQUNDRVNTIjoiQ29tbXVuaXR5IiwiU0NPUEUiOiJSRUFEIiwiYXVkIjoiUGFydG5lcnMiLCJqdGkiOiJTdGFuZGVyZEpXVFRva2VuMSJ9.Pl0YwiAs1UGzIdZXWbnFUGmBDfcKAlkZEcgYd_1NDo2co_6xziut1i0DTwcmcaKDlp7IuOOK1EXYKCmw0qlIu7ciM0DYmdD7M36VbC1TzTx-rVrUJmerRjh_EYY-S4txeCGZtZB0ow6bkgqh6GOz-uwcY7DOg90Da2qVtIk7seQtWi_709UEaNr3XTTorEiIaEqdUN3mmODpLTyrhpzXhop_JIGN1XzNZOfw-vM6DMhL_AiGjDZcvhbo9zPBmbmpECPudfXmtYxK2_4zTVtPDNxH_UUtOVza2MDdIBJCTxY4LQm7dfH-y3grRx6-KyBdUcrchTdqVPS1xATYCGo3QA" }'

Текущий код php (после конвертации):

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.dbs.com/sandbox/api/sg/v1/oauth/authorize');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"client_id\":\"demo\", \"client_assertion\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJEQlMiLCJpYXQiOjE1NTUwNTg0OTYsImV4cCI6MTU1NTE0NDg5Niwic3ViIjoiSnd0IFNpZ25lZCBUb2tlbiBmb3IgRGVtZSBBcHAgUGFydG5lciBUb2tlbiBmbG93IiwiUEFSVFlfVFlQRSI6MywiQ0xJRU5UX0lEIjoiY2xpZW50SWQzIiwiQ0xJRU5UX1RZUEUiOiJQYXJ0bmVyIiwiQUNDRVNTIjoiQ29tbXVuaXR5IiwiU0NPUEUiOiJSRUFEIiwiYXVkIjoiUGFydG5lcnMiLCJqdGkiOiJTdGFuZGVyZEpXVFRva2VuMSJ9.Pl0YwiAs1UGzIdZXWbnFUGmBDfcKAlkZEcgYd_1NDo2co_6xziut1i0DTwcmcaKDlp7IuOOK1EXYKCmw0qlIu7ciM0DYmdD7M36VbC1TzTx-rVrUJmerRjh_EYY-S4txeCGZtZB0ow6bkgqh6GOz-uwcY7DOg90Da2qVtIk7seQtWi_709UEaNr3XTTorEiIaEqdUN3mmODpLTyrhpzXhop_JIGN1XzNZOfw-vM6DMhL_AiGjDZcvhbo9zPBmbmpECPudfXmtYxK2_4zTVtPDNxH_UUtOVza2MDdIBJCTxY4LQm7dfH-y3grRx6-KyBdUcrchTdqVPS1xATYCGo3QA\" }");
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Clientid: clientId3';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

1 Ответ

1 голос
/ 12 апреля 2019

Похоже, что запрашиваемому API требуется заголовок User-Agent.

Попробуйте выполнить команду curl с флагом --verbose, чтобы увидеть заголовки запросов, отправляемых curl. Вы получите что-то вроде этого:

$ curl --verbose -X POST https://www.dbs.com/sandbox/api/sg/v1/oauth/authorize --header "Content-Type:application/json" --header "clientId:clientId3" -d '{ "client_id":"demo", "client_assertion":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJEQlMiLCJpYXQiOjE1NTUwNTg0OTYsImV4cCI6MTU1NTE0NDg5Niwic3ViIjoiSnd0IFNpZ25lZCBUb2tlbiBmb3IgRGVtZSBBcHAgUGFydG5lciBUb2tlbiBmbG93IiwiUEFSVFlfVFlQRSI6MywiQ0xJRU5UX0lEIjoiY2xpZW50SWQzIiwiQ0xJRU5UX1RZUEUiOiJQYXJ0bmVyIiwiQUNDRVNTIjoiQ29tbXVuaXR5IiwiU0NPUEUiOiJSRUFEIiwiYXVkIjoiUGFydG5lcnMiLCJqdGkiOiJTdGFuZGVyZEpXVFRva2VuMSJ9.Pl0YwiAs1UGzIdZXWbnFUGmBDfcKAlkZEcgYd_1NDo2co_6xziut1i0DTwcmcaKDlp7IuOOK1EXYKCmw0qlIu7ciM0DYmdD7M36VbC1TzTx-rVrUJmerRjh_EYY-S4txeCGZtZB0ow6bkgqh6GOz-uwcY7DOg90Da2qVtIk7seQtWi_709UEaNr3XTTorEiIaEqdUN3mmODpLTyrhpzXhop_JIGN1XzNZOfw-vM6DMhL_AiGjDZcvhbo9zPBmbmpECPudfXmtYxK2_4zTVtPDNxH_UUtOVza2MDdIBJCTxY4LQm7dfH-y3grRx6-KyBdUcrchTdqVPS1xATYCGo3QA" }'

> POST /sandbox/api/sg/v1/oauth/authorize HTTP/1.1
> Host: www.dbs.com
> User-Agent: curl/7.45.0
> ...

Итак, затем добавьте заголовок User-Agent в ваш php-код (любое значение будет работать):

curl_setopt($ch, CURLOPT_USERAGENT, 'curl/7.45.0');

Ответ ($result) будет выглядеть так:

{
    "access_token" : "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiIDogImh0dHBzOi8vY2FwaS5kYnMuY29tIiwiaWF0IiA6IDE1NTUwNjQ0MTE2MDQsICJleHAiIDogMTU1NTA2ODAxMTYwNCwic3ViIiA6ICJaR1Z0Ync9PSIsInB0eXR5cGUiIDogMywiY2xuaWQiIDogImNsaWVudElkMyIsImNsbnR5cGUiIDogIjIiLCAiYWNjZXNzIiA6ICIxRkEiLCJzY29wZSIgOiAiUkVBRCIgLCJhdWQiIDogImh0dHBzOi8vY2FwaS5kYnMuY29tL2FjY2VzcyIgLCJqdGkiIDogIjU5NjQxOTE1ODUzNzAwMjY5OTMiIH0.gij_4TyE6IX8mziHwK2eZaTXPtDDAnZ3nKAcKJYQJxs",
    "refresh_token" : "G/aZD0gOEoTuWETLSw+vt4OWIs8HFX/50psx2ShSaig=",
    "party_id" : "ZGVtbw==",
    "expire_in" : "1555068011604"
}

HTTP код ответа: 200

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