I want to perform a post with guzzle sending an xml file. I did not find an example.
What I 've done so far is :
$xml2=simplexml_load_string($xml) or die("Error: Cannot create object");
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
//
$request = new Request('POST', $uri, [ 'body'=>$xml]);
$response = $client->send($request);
//
//$code = $response->getStatusCode(); // 200
//$reason = $response->getReasonPhrase(); // OK
//
echo $response->getBody();
No matter what I try I get back error -1 which means that xml is not valid. XML that I send passes online validation though and is valid %100
Please help.
user3485417
After some experiments, I have figured it out. Here is my solution in case someone reaches a dead end.
$request = new Request(
'POST',
$uri,
['Content-Type' => 'text/xml; charset=UTF8'],
$xml
);
Abz
This is what worked for me on Guzzle 6:
// configure options
$options = [
'headers' => [
'Content-Type' => 'text/xml; charset=UTF8',
],
'body' => $xml,
];
$response = $client->request('POST', $url, $options);
Shaolin
If you want to send xml using the post method, here is an example:
$guzzle->post($url, ['body' => $xmlContent]);
You can do that in a below way
$xml_body = 'Your xml body';
$request_uri = 'your uri'
$client = new Client();
$response = $client->request('POST', $request_uri, [
'headers' => [
'Content-Type' => 'text/xml'
],
'body' => $xml_body
]);
Try posting the data like:
$xml2=simplexml_load_string($xml) or die("Error: Cannot create object");
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
//
$request = new Request('POST', $uri, [
'form_params' => [
'xml' => $xml,
]
]);
$response = $client->send($request);
//$code = $response->getStatusCode(); // 200
//$reason = $response->getReasonPhrase(); // OK
echo $response->getBody();
来源:https://stackoverflow.com/questions/34726530/proper-way-to-send-post-xml-with-guzzle-6