繁体   English   中英

从HTTP套接字响应获取XML元素的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM