Je veux effectuer un post avec guzzle en envoyant un fichier xml. Je n'ai pas trouvé d'exemple.
Ce que j'ai fait jusqu'à présent, c'est:
$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();
Peu importe ce que j'essaye, je récupère l'erreur -1, ce qui signifie que xml n'est pas valide. Le XML que j'envoie passe cependant la validation en ligne et est valide% 100
Veuillez aider.
Après quelques expériences, je l'ai compris. Voici ma solution au cas où quelqu'un arriverait dans une impasse.
$request = new Request(
'POST',
$uri,
['Content-Type' => 'text/xml; charset=UTF8'],
$xml
);
C'est ce qui a fonctionné pour moi sur Guzzle 6:
// configure options
$options = [
'headers' => [
'Content-Type' => 'text/xml; charset=UTF8',
],
'body' => $xml,
];
$response = $client->request('POST', $url, $options);
Si vous souhaitez envoyer du xml à l'aide de la méthode post, voici un exemple:
$guzzle->post($url, ['body' => $xmlContent]);
Vous pouvez le faire d'une manière ci-dessous
$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
]);