[英]Get value of XML element from a HTTP Socket response
我有一个控制器,它使用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元素的价值?
我想要状态和GUID。
我已经尝试过:
$xml = new SimpleXMLElement($resulthit);
但是我只得到一个错误,说
"String could not be parsed as XML"
您可以使用CakePHP Xml类: CakePHP XML类
无法将代码解析为XML的原因是因为您周围有<pre>标记,我想是因为您正在尝试进行debug($ something)。
控制器的顶部包括XML类:
//First Load the Utility Class
App::uses('Xml', 'Utility');
在控制器动作中执行以下操作:
$this->autoRender = false;
pr(Xml::toArray(Xml::build($thexmlvariable)));
这样,您可以对其进行测试,然后应使用ajax布局(空白布局)。
好吧,最后我得出结论,由于“处理指令目标之前存在空格”,我从Http响应获得的xml无效,我尝试使用有效XML的另一个“虚拟文件响应”,它给出了我想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.