2014-10-09 134 views
0

我正在研究一个需要Java和PHP技术的项目。我使用Java来实现业务逻辑和数据源管理,而PHP有助于使用我使用Java提供的Web服务。 我的问题: 当我使用来自Web服务的响应并且结果包含多个返回集合时,程序运行良好。 (http://driesmeers.mamca.be/images/successpage.png) 但是,一旦结果只返回一个集体回复,我收到一个错误,如下所示。 (http://driesmeers.mamca.be/images/errorpage.png错误:注意:试图获取非对象的属性

这里是我的code.PHP

<?php 
    try { 
$wsdl_url = 'http://localhost:8080/Mamca/MamcaWS?WSDL'; 
$client = new SOAPClient($wsdl_url); 
$params = array(
    'projectid' => $_SESSION['projectID'], 
); 
$return = $client->getAlternativeListByProjectID($params); 
if (isset($return->return)) { 
    foreach ($return->return as $eachItem) { 
     echo "<tr align='center'>"; 
     echo "<td align='left' class='rowDisplay'> <a href = '#' class = 'rowNumber2'>" . $eachItem->alternativedescription . "</a></td>"; 
     echo "<td align='left' class='rowDisplay'>" . $eachItem->alternativeGroup . "</td>"; 
     echo "<td align='left' class='rowDisplay'>"; 
     echo ($eachItem->status === 1 ? 'Active' : 'Inactive'); 
     echo "</td>"; 
     echo "<td align='center' class='rowDisplay'><img src = '../images/icons/delete.png' longdesc = 'http://.delete' /><img src = '../images/icons/table_edit.png' width = '16' height = '16' /></td>"; 
     echo "</tr>"; 
    } 
} 
} catch (Exception $e) { 
echo "Exception occured: " . $e; 
} 
?> 

<tr id="ajax_response">           
</tr> 

从WS响应与错误输出:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<SOAP-ENV:Header/> 
<S:Body> 
    <ns2:getAlternativeListByProjectIDResponse xmlns:ns2="http://services.mamca.be.vub/"> 
     <return> 
      <alternativeGroup>testt</alternativeGroup> 
      <alternativedescription>testtt</alternativedescription> 
      <alternativeid>10670</alternativeid> 
      <id>19</id> 
      <projectid>12313</projectid> 
      <status>1</status> 
     </return> 
    </ns2:getAlternativeListByProjectIDResponse> 
</S:Body> 
</S:Envelope> 

我如何解决这个问题?谢谢。

回答

0

当结果是一个单一元素时,SOAPClient默认情况下不返回数组,而是一个对象。

您可以设置的SOAPClient总是返回一个数组,即使结果是一个元素,在实例添加此参数:

$client = new SOAPClient($wsdl_url ,array(
    "features" => SOAP_SINGLE_ELEMENT_ARRAYS 
)); 
+0

,你这么多,它的工作。 – 2014-10-09 11:18:07

相关问题