-
-
Save juampynr/bfd5e8e38424618b3065b3f6a9713e69 to your computer and use it in GitHub Desktop.
<?php | |
require 'vendor/autoload.php'; | |
use GuzzleHttp\Client; | |
$client = new Client([ | |
'base_uri' => 'http://example.com', | |
]); | |
$payload = file_get_contents('/my-data.xml'); | |
$response = $client->post('the/endpoint', [ | |
'debug' => TRUE, | |
'body' => $payload, | |
'headers' => [ | |
'Content-Type' => 'application/x-www-form-urlencoded', | |
] | |
]); | |
$body = $response->getBody(); | |
print_r(json_decode((string) $body)); |
Hi !
"body" param is deprecated in last version of Guzzle.
You must use "form_params" option to send a 'application/x-www-form-urlencoded' request
or the "multipart" request option to send a 'multipart/form-data' request.Related: https://stackoverflow.com/a/34411797
thanks bro
hi dude, i have a problem
when i send form_params in guzzle, there's no value of the form sended, how to fixing this problem....
Works!! Thank you!
Hello here!
I have two project separated: (1.) Laravel for user Key-in Data (2.) Laravel for API
(1.) Laravel for user Key-in Data work fine in local machine send Data to (2.) but on server not send body's data.
(1.) Key-in Data Project
$client = new Client(['headers' => ['X-Client-Code' => env('KEY_CODE')]]);
$request_param = [
'client_id' => $request->client_id,
'code' => $request->code,
'phone_number' => $request->phone_number,
'sms_type' => 'card'
];
$request_data = json_encode($request_param);
$res = $client->request(
'POST',
url(env('API_URL').'api/v0/user/activate-card'),
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => file_get_contents(storage_path('credential').'/.token')
],
'body' => $request_data
]
);
return $res->getBody()->getContents();
(2.) Laravel API
$ehealth_code = $request->headers->get('x-client-code');
$data = json_decode($request->getContent(),true); // return empty
Note: from my local iMac is sending body data server fine but on Ubuntu server cannot sending body data.
Hello here!
I have two project separated: (1.) Laravel for user Key-in Data (2.) Laravel for API
(1.) Laravel for user Key-in Data work fine in local machine send Data to (2.) but on server not send body's data.(1.) Key-in Data Project
$client = new Client(['headers' => ['X-Client-Code' => env('KEY_CODE')]]); $request_param = [ 'client_id' => $request->client_id, 'code' => $request->code, 'phone_number' => $request->phone_number, 'sms_type' => 'card' ]; $request_data = json_encode($request_param); $res = $client->request( 'POST', url(env('API_URL').'api/v0/user/activate-card'), [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => file_get_contents(storage_path('credential').'/.token') ], 'body' => $request_data ] ); return $res->getBody()->getContents();
(2.) Laravel API
$ehealth_code = $request->headers->get('x-client-code'); $data = json_decode($request->getContent(),true); // return empty
Note: from my local iMac is sending body data server fine but on Ubuntu server cannot sending body data.
Dude you're a life saver! Thank you so much i was getting error again and again you solved by encoding form params to JSON thanksss
$client = new Client();
$data = $client->request(
'POST',
'https://api.com/v1/customers/cus_MrrW/ggg',
[
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
'Authorization' => 'Basic OWQwM'
],
'form_params' => [
'dropoff_address' => $dropOffAddress,
'dropoff_name' => $user->name,
'dropoff_phone_number' => $user->phone,
'manifest' => 'groceries delivery',
'manifest_items' => $item,
'pickup_address' => $store->address,
'pickup_name' => $store->name,
'pickup_phone_number' => $store->phone
]
]
);
I'm doing like this but form_params not passing data.
Hi !
"body" param is deprecated in last version of Guzzle.
You must use "form_params" option to send a 'application/x-www-form-urlencoded' request
or the "multipart" request option to send a 'multipart/form-data' request.Related: https://stackoverflow.com/a/34411797
What do do when you post other content?
e.g. "application/json"?
So neither a MIME-Multipart nor applicaton/form-data?
Set the header as "content-type" : "application/x-www-form-urlencoded" to accept form_params.
Hi !
"body" param is deprecated in last version of Guzzle.
You must use "form_params" option to send a 'application/x-www-form-urlencoded' request
or the "multipart" request option to send a 'multipart/form-data' request.
Related: https://stackoverflow.com/a/34411797