мыло — PHP SoapClient недостающие данные

Я использую SoapClient (zend2), но по некоторым причинам не могу получить полный ответ на данные

$client = new \SoapClient($host);
$result = $client->getInvoice();

$ result var_dump:

["ListInvoiceResult"] => object(stdClass)#282 (4) {
["Status"] => int(1)
["ErrorCode"] => NULL
["ErrorMessage"] => string(0) ""["Invoice"] => array(1436) {
[0] => object(stdClass)#283 (3) {
["ID"] => int(12741)
["Date"] => string(10) "2011.01.31"["DateSales"] => string(10) "2011.01.31"}

Над объектом отсутствует переменная Номер счета

Но когда я вызываю метод __getLastResponse, я получаю полные данные с InvoiceNumber

 <p1:Invoice>
<p1:ID>12741</p1:ID>
<p1:InvoiceNumber>1|FA|2011|00633</p1:InvoiceNumber>
<p1:Date>2011.01.31</p1:Date>
<p1:DateSales>2011.01.31</p1:DateSales>
</p1:Invoice>

Хммм. Выглядит странно Но все остальные методы возвращают полные данные, даже переменную Invoice Number.

0

Решение

Я думаю, что вы должны попробовать использовать classmap опция в SoapClient или проверить ваши сопоставленные классы, например:

class MyBook {
public $title;
public $author;
}

$server = new SoapClient("books.wsdl", array('classmap' => array('book' => "MyBook")));

В вашем случае вам следует смоделировать ListInvoiceResult и класс Invoice, например:

class WS_ListInvoiceResult {
public $Status;
public $ErrorCode;
public $ErrorMessage;
public $Invoice;
}

class WS_Invoice {
public $ID;
public $Date;
public $DateSales;
public $InvoiceNumber;
}

И подключаем к мылу api как таковой:

$server = new SoapClient("wsdl path", array('classmap' => array("ListInvoiceResult" => "WS_ListInvoiceResult", "Invoice" => "WS_Invoice")));

Если это не поможет, попробуйте проверить свой WSDL, хотя, судя по ответу, все в порядке.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector