如何使用 guzzle 检索 XML

How to retrieve XML using guzzle

我想检索来自某个 url 的响应,但是这个 URL return 它是使用 xml 的响应。有没有办法使用 Guzzle 检索此响应?在 Guzzle 5.3 中,我们可以轻松地执行类似

的操作

$response->xml()

因此这将解析 xml 内容。现在,当我尝试在 Guzzle 6.2 中使用相同的代码时,它不再起作用了。下面是我的代码

$response = $client->get($this->url);
$resp = $response->xml();

但这不起作用。我也在下面试过

$response = $client->get($this->url);
$response = $response->getBody()->getContents();
$responseXml = simplexml_load_string($response);
if ($responseXml instanceof \SimpleXMLElement)
{
   $key_value = (string)$responseXml->key_name;
   return $key_value;
 }

但这不起作用。关于如何检索 xml 数据的任何想法?

明白了。结果我只需要添加

'ACCEPT' => 'application/json'

到我请求的header参数。然后我可以解码 xml 如下面的代码所示

$provider_type = 'application/xml';

$param_data = [
   'headers' => [
      'Accept' => $provider_type,
   ]
];
$response = $this->client->get($this->url, $param_data);            
$response = $response->getBody()->getContents();

    switch ($provider_type) {
        case 'application/xml':
            $encode_response = json_encode(simplexml_load_string($response));   

            $decode_response = json_decode($encode_response, TRUE);
            return $decode_response;

        default: // Response json
            $encode_response = json_encode($response);   

            $decode_response = json_decode($encode_response, TRUE);
            return json_decode($decode_response, TRUE);                

    }