gpt4 book ai didi

laravel-5 - guzzle 6.0 调用未定义的方法 GuzzleHttp\Psr7\Response::xml()

转载 作者:行者123 更新时间:2023-12-05 04:15:23 86 4
gpt4 key购买 nike

我想检查来自服务器的基于 xml 的响应,这里是响应格式的示例。

<response>
<code>success</code>
</response>

我现有的代码,

使用 GuzzleHttp\Client;

$client = new Client();
$response = $client->post('http://example.com/verify', [
'form_params' => [
'transID' => 1234,
'orderID' => 6789,
'token' => '0X45FJH79GD3332'
]
]);

$xml = $response->xml();

dd($xml);

但是,当我向服务器发出请求时,出现如下错误。

调用未定义的方法 GuzzleHttp\Psr7\Response::xml()

最佳答案

我认为该文档已过时(实际上对于 5.3 版,我想您使用的是 6.*)

他们说发送请求将返回一个 Guzzle\Http\Message\Response 对象。在这个版本的 Guzzle 中,您得到的是 GuzzleHttp\Psr7\Response它没有实现 xml() 方法。

你可以去https://github.com/guzzle/guzzle/blob/5.3/src/Message/Response.php查看旧版本并使用该方法。例如。创建这个:

public function xml(Request $request, array $config = [])
{
$disableEntities = libxml_disable_entity_loader(true);
$internalErrors = libxml_use_internal_errors(true);
try {
// Allow XML to be retrieved even if there is no response body
$xml = new \SimpleXMLElement(
(string) $request->getBody() ?: '<root />',
isset($config['libxml_options']) ? $config['libxml_options'] : LIBXML_NONET,
false,
isset($config['ns']) ? $config['ns'] : '',
isset($config['ns_is_prefix']) ? $config['ns_is_prefix'] : false
);
libxml_disable_entity_loader($disableEntities);
libxml_use_internal_errors($internalErrors);
} catch (\Exception $e) {
libxml_disable_entity_loader($disableEntities);
libxml_use_internal_errors($internalErrors);
throw new YourXmlParseException(
'Unable to parse response body into XML: ' . $e->getMessage(),
$request,
$e,
(libxml_get_last_error()) ?: null
);
}
return $xml;
}

关于laravel-5 - guzzle 6.0 调用未定义的方法 GuzzleHttp\Psr7\Response::xml(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32232395/

86 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com