无法读取 php 中的 Web 服务响应
cannot read web service response in php
我在 PHP 中调用 Web 服务,但在处理响应时遇到困难。
如果我执行 var_dump 响应,这是网络服务返回的消息:
stdClass Object
(
[webserviceaction] => stdClass Object
(
[any] =>
<result xmlns="" corpname="test"><user id="tester">
<inbox><actionitems><title>View transcript</title>
<actionitemurl>../MainView.aspx?tab_page_id=-8&Reset=TRUE</actionitemurl>
</actionitems><actionitems>
.....
</result>
试图将公司名称读作
$getUser->Webserviceaction->Result['corpName'];
显示NULL。不确定如何读取对象内部的 xml。
已尝试根据 http://board.phpbuilder.com/showthread.php?10370637-Cannot-read-web-service-response
获取最后的响应
仍然无法获取值。
这是代码。
echo "RESPONSE:\n" . $client->__getLastResponse() . "\n";
$xmlstring = $getUser->webserviceaction->any;
$xml = new SimpleXMLElement($xmlstring);
foreach ($xml->result->user->inbox->actionitems as $res)
echo "Title" . $res->title . "\n";
请指教
这是我在打印 $xml
时看到的
resultobject(SimpleXMLElement)#8 (2) {
["@attributes"]=>
array(1) {
["corpName"]=>
string(4) "test"
}
["User"]=>
object(SimpleXMLElement)#9 (4) {
["@attributes"]=>
array(1) {
["id"]=>
string(6) "tester"
}
["Inbox"]=>
object(SimpleXMLElement)#10 (1) {
["ActionItems"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#13 (2) {
["Title"]=>
string(15) "View transcript"
["ActionItemUrl"]=>
string(46) "../MainView.aspx?tab_page_id=-8&Reset=TRUE"
}
[1]=>
object(SimpleXMLElement)#14 (2) {
["Title"]=>
string(32) "View Training Exemption Requests"
["ActionItemUrl"]=>
string(40) "../PendingExemptionRequests.aspx?wp=1"
...
我觉得应该是:
$xmlstring = $getUser->webserviceaction->any;
那么循环应该是:
foreach ($xml->User->ActionItems as $res) {
echo "Title: " . $res->Title . "\n";
}
简单 XML 是 case-sensitive.。而且没有result
元素,那是顶级XML对象的标签。
我在 PHP 中调用 Web 服务,但在处理响应时遇到困难。
如果我执行 var_dump 响应,这是网络服务返回的消息:
stdClass Object
(
[webserviceaction] => stdClass Object
(
[any] =>
<result xmlns="" corpname="test"><user id="tester">
<inbox><actionitems><title>View transcript</title>
<actionitemurl>../MainView.aspx?tab_page_id=-8&Reset=TRUE</actionitemurl>
</actionitems><actionitems>
.....
</result>
试图将公司名称读作
$getUser->Webserviceaction->Result['corpName'];
显示NULL。不确定如何读取对象内部的 xml。
已尝试根据 http://board.phpbuilder.com/showthread.php?10370637-Cannot-read-web-service-response
获取最后的响应仍然无法获取值。 这是代码。
echo "RESPONSE:\n" . $client->__getLastResponse() . "\n";
$xmlstring = $getUser->webserviceaction->any;
$xml = new SimpleXMLElement($xmlstring);
foreach ($xml->result->user->inbox->actionitems as $res)
echo "Title" . $res->title . "\n";
请指教
这是我在打印 $xml
时看到的 resultobject(SimpleXMLElement)#8 (2) {
["@attributes"]=>
array(1) {
["corpName"]=>
string(4) "test"
}
["User"]=>
object(SimpleXMLElement)#9 (4) {
["@attributes"]=>
array(1) {
["id"]=>
string(6) "tester"
}
["Inbox"]=>
object(SimpleXMLElement)#10 (1) {
["ActionItems"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#13 (2) {
["Title"]=>
string(15) "View transcript"
["ActionItemUrl"]=>
string(46) "../MainView.aspx?tab_page_id=-8&Reset=TRUE"
}
[1]=>
object(SimpleXMLElement)#14 (2) {
["Title"]=>
string(32) "View Training Exemption Requests"
["ActionItemUrl"]=>
string(40) "../PendingExemptionRequests.aspx?wp=1"
...
我觉得应该是:
$xmlstring = $getUser->webserviceaction->any;
那么循环应该是:
foreach ($xml->User->ActionItems as $res) {
echo "Title: " . $res->Title . "\n";
}
简单 XML 是 case-sensitive.。而且没有result
元素,那是顶级XML对象的标签。