2014-10-09 2 views
0

Я работаю над проектом, который требует технологий как в Java, так и в PHP. Я использую Java для реализации своей бизнес-логики и управления источниками данных, в то время как PHP помогает использовать веб-сервис, предоставляемый с использованием Java. Моя проблема: Когда я потребляю ответ от веб-службы, и результат содержит более одного возврата, программа работает нормально. (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

, что вы так много он работал. –