目前我正在嘗試測驗一些 API 端點使用郵遞員。正如我們所知,郵遞員為我們提供了將請求集成到許多不同語言的代碼中的資訊。所以我在我的 laravel 框架上選擇代碼格式 PHP-cURL 并且它可以作業。但是我想將 PHP-cURL 格式轉換為 laravel Guzzle。但沒有用。
這是 PHP-cURL 代碼
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://sandbox.plaid.com/asset_report/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"client_id": "xxxx",
"secret": "xxxx",
"access_tokens": ["access-sandbox-xxx"],
"days_requested": 30,
"options": {
"client_report_id": "ENTER_CLIENT_REPORT_ID_HERE",
"webhook": "https://www.example.com/webhook",
"user": {
"client_user_id": "ENTER_USER_ID_HERE",
"first_name": "ENTER_FIRST_NAME_HERE",
"middle_name": "ENTER_MIDDLE_NAME_HERE",
"last_name": "ENTER_LAST_NAME_HERE",
"ssn": "111-22-1234",
"phone_number": "1-415-867-5309",
"email": "ENTER_EMAIL_HERE"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
這種 PHP-cURL 格式可以成功運行并在我的 laravel 上顯示回應。但是當我更改為 Laravel Guzzle 時.. 它顯示錯誤。這是guzzle代碼
use GuzzleHttp\Client;
$guzzle = new Client;
$getAccestToken = $guzzle->request('POST', 'https://sandbox.plaid.com/asset_report/create', [
'headers' => ['Content-Type' => 'application/json'],
'json' => [
"client_id" => "xxx",
"secret" => "xxx",
"access_token" => [ "access-sandbox-xxx" ] ,
"days_requested" => 30,
"options" => [
"client_report_id" => "ENTER_CLIENT_REPORT_ID_HERE",
"webhook" => "https://www.example.com/webhook",
"user" => [
"client_user_id" => "ENTER_USER_ID_HERE",
"first_name" => "ENTER_FIRST_NAME_HERE",
"middle_name" => "ENTER_MIDDLE_NAME_HERE",
"last_name" => "ENTER_LAST_NAME_HERE",
"ssn" => "111-22-1234",
"phone_number" => "1-415-867-5309",
"email" => "ENTER_EMAIL_HERE"
]
]
]
]);
顯示錯誤
客戶端錯誤:
POST https://sandbox.plaid.com/asset_report/create導致400 Bad Request回應:{ "display_message": null, "documentation_url": "https://plaid.com/docs/?ref=error#invalid-request-errors", "error (truncated...)
我的 guzzle 代碼中缺少什么。
請幫忙。
uj5u.com熱心網友回復:
Laravel 有可用的 Http 客戶端,它是 guzzle 的包裝器:
$response = Http::withToken($token)->post('yourUrl', [ params ]);
dd($response->body());
uj5u.com熱心網友回復:
您應該嘗試替換json為body:
此外,將陣列轉換為有效的 JSON 格式。
參考資料:https ://stackoverflow.com/a/39525059/5192105
use GuzzleHttp\Client;
$guzzle = new Client;
$getAccestToken = $guzzle->request('POST',
'https://sandbox.plaid.com/asset_report/create', [
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode([
"client_id" => "xxx",
"secret" => "xxx",
"access_token" => [ "access-sandbox-xxx" ] ,
"days_requested" => 30,
"options" => [
"client_report_id" => "ENTER_CLIENT_REPORT_ID_HERE",
"webhook" => "https://www.example.com/webhook",
"user" => [
"client_user_id" => "ENTER_USER_ID_HERE",
"first_name" => "ENTER_FIRST_NAME_HERE",
"middle_name" => "ENTER_MIDDLE_NAME_HERE",
"last_name" => "ENTER_LAST_NAME_HERE",
"ssn" => "111-22-1234",
"phone_number" => "1-415-867-5309",
"email" => "ENTER_EMAIL_HERE"
]
]
])
]);
uj5u.com熱心網友回復:
我找到了答案。我錯字了
"access_token" => [ "access-sandbox-xxx" ] ,
應該用“令牌”
"access_tokens" => [ "access-sandbox-xxx" ] ,
并且可以正常運行。感謝您的所有回復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512917.html
標籤:php拉拉维尔卷曲
