Guzzle XML request and response.
Library | Version |
---|---|
PHP | >=7.2.5 |
Guzzle | >=7.0 and < 8.0 |
Symfony Serializer | >=5.0 and < 6.0 |
Guzzle | PHP | Repo |
---|---|---|
6.x | >=5.5 | 0.x |
7.x | >=7.2 | 1.x |
composer require tarkhov/guzzle-xml
Following example creates POST request with XML body. Option xml
accepts an array that is converted to XML document. About array format and how converting works you can read in detail Symfony XmlEncoder.
<?php
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Client;
use GuzzleXml\XmlMiddleware;
$stack = HandlerStack::create();
$stack->push(XmlMiddleware::xml(), 'xml');
$client = new Client(['handler' => $stack]);
$response = $client->post('https://example.com', [
'xml' => [
'package' => [
'@language' => 'PHP',
'name' => 'Guzzle XML',
'author' => [
'@role' => 'developer',
'#' => 'Alexander Tarkhov',
],
'support' => [
'issues' => 'https://github.com/tarkhov/guzzle-xml/issues',
'source' => 'https://github.com/tarkhov/guzzle-xml',
],
],
],
]);
As a result, an xml request will be sent with the header Content-type: text/xml
and data with the following content:
<?xml version="1.0"?>
<package language="PHP">
<name>Guzzle XML</name>
<author role="developer">Alexander Tarkhov</author>
<support>
<issues>https://github.com/tarkhov/guzzle-xml/issues</issues>
<source>https://github.com/tarkhov/guzzle-xml</source>
</support>
</package>
Automatically convert your JSON response to XML using middleware.
<?php
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Client;
use GuzzleXml\XmlMiddleware;
$stack = HandlerStack::create();
$stack->push(XmlMiddleware::jsonToXml());
$client = new Client(['handler' => $stack]);
$response = $client->post('https://example.com');
$xml = $response->getBody();
echo $xml;
If you json response is:
{
"package": {
"@language":"PHP",
"name":"Guzzle XML",
"author": {
"@role":"developer",
"#":"Alexander Tarkhov"
},
"support": {
"issues":"https:\/\/github.com\/tarkhov\/guzzle-xml\/issues",
"source":"https:\/\/github.com\/tarkhov\/guzzle-xml"
}
}
}
This will automatically convert to XML like this:
<?xml version="1.0"?>
<package language="PHP">
<name>Guzzle XML</name>
<author role="developer">Alexander Tarkhov</author>
<support>
<issues>https://github.com/tarkhov/guzzle-xml/issues</issues>
<source>https://github.com/tarkhov/guzzle-xml</source>
</support>
</package>
Alexander Tarkhov
This project is licensed under the MIT License - see the LICENSE
file for details.