如何使用 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);
}
我想检索来自某个 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);
}