使用PHP时,SOAP响应中的对象为空

问题描述:

我有一个奇怪的问题。我为PHP使用SOAP并获取价格。使用PHP时,SOAP响应中的对象为空

如果我使用了SoapUI获取价格的反应是这样的:

<article> 
    <id>53db51:f984db9fa4:-773c</id> 
    <primaryid>BG267</primaryid> 
    <isremoved>false</isremoved> 
    <articlecampaignprice> 
     <currency>NOK</currency> 
     <price>340.0</price> 
    </articlecampaignprice> 
</article> 

但是,如果我做同样的在PHP中,我得到的回应是这样的:

object(stdClass)#81 (1) { 
["article"]=> 
array(3) { 
    [0]=> 
    object(stdClass)#82 (4) { 
    ["id"]=> 
    string(23) "53db51:f984db9fa4:-773c" 
    ["primaryid"]=> 
    string(5) "BG267" 
    ["isremoved"]=> 
    bool(false) 
    ["articlecampaignprice"]=> 
    object(stdClass)#83 (0) { 
    } 
    } 
} 
} 

的“articlecampaignprice” - 对象是空的。 PHP中是否有可以导致这种情况的设置?我已经有WSDL,缓存设置为0。

+0

请确保本文中提到的'XML'是您正在获取的实际'XML'。 –

+1

你可以显示你使用的PHP吗? –

+0

如何将xml转换为数组 –

试试这个

<?php 
$xmlData = "<article> 
    <id>53db51:f984db9fa4:-773c</id> 
    <primaryid>BG267</primaryid> 
    <isremoved>false</isremoved> 
    <articlecampaignprice> 
     <currency>NOK</currency> 
     <price>340.0</price> 
    </articlecampaignprice> 
</article>"; 

$xml=simplexml_load_string($xmlData) or die("Error: Cannot create object"); 
echo "<pre>"; 
print_r($xml); 
?> 

输出

SimpleXMLElement Object 
(
    [id] => 53db51:f984db9fa4:-773c 
    [primaryid] => BG267 
    [isremoved] => false 
    [articlecampaignprice] => SimpleXMLElement Object 
     (
      [currency] => NOK 
      [price] => 340.0 
     ) 

) 

所有者的web服务重新启动服务器。现在它再次正常工作。奇怪。

结论:问题不在PHP方面。这是与外部网络服务。

+0

这不是一个答案 –

+0

这不是一个评论 – johnohod

+0

嗯,答案是错误不是在PHP端。这是造成这种行为的外部Web服务。对于任何有类似问题的人来说,这实际上仍然是有用的信息。 – johnohod