tarkhov / guzzle-xml
Guzzle XML 请求和响应。
v1.0.0
2020-09-17 04:02 UTC
Requires
- php: >=7.2.5
- guzzlehttp/guzzle: ^7.0
- symfony/serializer: ^5.0
Requires (Dev)
- blastcloud/guzzler: ^2.0
README
Guzzle XML 请求和响应。
内容
兼容性
版本支持
安装
Composer
composer require tarkhov/guzzle-xml
使用方法
请求选项
以下示例创建了一个具有 XML 体的 POST 请求。选项 xml
接受一个数组,该数组将被转换为 XML 文档。关于数组格式和转换方式,您可以详细阅读 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', ], ], ], ]);
因此,将发送一个带有 Content-type: text/xml
标头的 XML 请求,其内容如下
<?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>
响应
使用中间件自动将您的 JSON 响应转换为 XML。
<?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;
如果您的 JSON 响应是
{ "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" } } }
这将自动转换为如下 XML
<?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
许可证
本项目采用 MIT 许可证 许可 - 详细内容请参阅 LICENSE
文件。