У меня был сервер Soap, собранный на Nusoap. Один из методов возвратил что-то вроде этого:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://test.webservice/soap/"> <SOAP-ENV:Body> <ns1:get_itemsResponse xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"> <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:SelectItem[18]"> <item xsi:type="tns:SelectItem"> <id xsi:type="xsd:int">6</id> <name xsi:type="xsd:string">This is the first item</name> </item> <item xsi:type="tns:SelectItem"> <id xsi:type="xsd:int">7</id> <name xsi:type="xsd:string">This is another item</name> </item> ...
Теперь я переключился на Zend Soap и просто не могу ответить так, как показано выше. Самое близкое, что я получил, было примерно так:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://another.webservice/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:get_ItemsResponse> <return xsi:type="ns1:SelectResponse"> <items SOAP-ENC:arrayType="ns1:SelectItem[18]" xsi:type="ns1:ArrayOfSelectItem"> <item xsi:type="ns1:SelectItem"> <id xsi:type="xsd:int">6</id> <name xsi:type="xsd:string">This is the first item</name> </item> <item xsi:type="ns1:SelectItem"> <id xsi:type="xsd:int">7</id> <name xsi:type="xsd:string">This is another item</name> </item> ...
Я использую функцию автообнаружения Zend_Soap, и это два задействованных предложения:
class SelectResponse { /** @var SelectItem[] */ public $items; } class SelectItem { /** @var int */ public $id; /** @var string */ public $name; }
Есть ли у вас какие-либо идеи, как я могу получить такой же ответ с Zend_Soap, как и с Nusoap?