currently i’m trying to test some API endpoint use postman. As we know that postman provide us the information to integrate the request into the code in many different languages. So i select code format PHP-cURL on my laravel framework and it works. however i want to convert PHP-cURL format into laravel Guzzle. but didn’t work.
here is the PHP-cURL code
$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;
this PHP-cURL format can success run and display the response on my laravel. but when i change to Laravel Guzzle.. it display error. here is the guzzle code
use GuzzleHttpClient;
$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"
]
]
]
]);
display error
Client error:
POST https://sandbox.plaid.com/asset_report/create
resulted in a400 Bad Request
response: { "display_message": null, "documentation_url": "https://plaid.com/docs/?ref=error#invalid-request-errors", "error (truncated…)
What is missing on my guzzle code.
please help.
3
Answers
i found the answer. i typo
Should with "tokens"
and it can be run correctly. thank you for all your response.
Laravel has the Http client available which is a wrapper around guzzle:
You should try replacing
json
withbody
:Also, convert the array into valid JSON format.
References: https://stackoverflow.com/a/39525059/5192105