我有一个使用HTTP套接字发送请求的控制器,并以xml
格式提供响应。我正在使用cakephp 2.6
以下是获取响应正文的代码:
$HttpSocket = new HttpSocket();
$response = $HttpSocket->request($request);
$resulthit = $response->body;
当我尝试打印响应正文时,它会在我的浏览器中返回:
-2201502101153512eFXcByWLUHvQmYC0EHMn2JVxcpyzozBcek uid dan pwd
但是当我看到页面的来源时,这就是我所看到的:
<? xml version="1.0" ?>
<PUSH>
<STATUS>-2</STATUS>
<SMSCMESSAGEID>20150210133953</SMSCMESSAGEID>
<GUID>knDlIBuUZf6zixlhbbxxLoxhEUGZTWPD</GUID>
<MSG>cek uid dan pwd</MSG>
</PUSH>
我如何获得上面的XML元素的价值?
我想要STATUS和GUID。
我已经尝试过了:
$xml = new SimpleXMLElement($resulthit);
但我只收到错误的回复
"String could not be parsed as XML"
答案 0 :(得分:1)
您可以使用CakePHP Xml类:CakePHP XML class
代码无法解析为XML的原因是因为你有&lt;前&gt;围绕它的标签,我猜是因为你正在尝试调试($ something)。
在控制器的顶部包含XML类:
//First Load the Utility Class
App::uses('Xml', 'Utility');
控制器操作中的执行以下操作:
$this->autoRender = false;
pr(Xml::toArray(Xml::build($thexmlvariable)));
这样你可以测试它然后你应该使用ajax布局(空白布局)。
答案 1 :(得分:1)
最后,我得出结论,在处理指令目标之前,我从Http响应得到的xml无效,因为“空格”。 我尝试过另一个虚拟文件响应&#39;有效的xml,它给了我想要的东西。