проверка — PHP-клиент мыла генерирует исключение

У меня есть клиент php и служба на основе gsoap (linux). При обращении к одному из методов (сервисов) я получаю следующее исключение:

Нарушение ограничения валидации: отсутствует идентификатор для ref # ref1 в элементе ‘env: Envelope’

Ошибка вращается вокруг одного аргумента в вызове, который представляет собой сложный аргумент. Основой этого аргумента являются «массив данных», показанный ниже в wsdl.

Вот соответствующий WSDL:

  <complexType name="data-elem">
<sequence>
<element name="name" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<element name="list" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<element name="length" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<element name="stype" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<element name="dtype" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<element name="permission" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<element name="message" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<choice>
<element name="cdata" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<element name="idata" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<element name="fdata" type="xsd:float" minOccurs="1" maxOccurs="1"/>
<element name="ddata" type="xsd:double" minOccurs="1" maxOccurs="1"/>
</choice>
</sequence>
</complexType>
<complexType name="data">
<sequence>
<element name="elems" type="ns:data-elem" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="array-data">
<sequence>
<element name="records" type="ns:data" minOccurs="0" maxOccurs="unbounded"/>
</sequence>

Вот как выглядят переданные данные для этого аргумента:

stdClass Object ( [records] => Array ( [0] => stdClass Object ( [elems] => Array ( [0] => stdClass Object ( [name] => SERVICE.d01 [list] => [length] => 15 [stype] => 1 [dtype] => 0 [permission] => 3 [message] => [cdata] => gerry@yohoo.com ) [1] => stdClass Object ( [name] => SERVICE.servdef [list] => [length] => 0 [stype] => 3 [dtype] => 0 [permission] => 1 [message] => [idata] => 3 ) ) ) [1] => stdClass Object ( [elems] => Array ( [0] => stdClass Object ( [name] => SERVICE.d01 [list] => [length] => 15 [stype] => 1 [dtype] => 0 [permission] => 3 [message] => [cdata] => gerry@yohoo.com ) [1] => stdClass Object ( [name] => SERVICE.servdef [list] => [length] => 0 [stype] => 3 [dtype] => 0 [permission] => 1 [message] => [idata] => 3 ) ) ) ) )

Я не совсем уверен, что переданные данные соответствуют схеме, но если я передам один массив «records», вызов службы работает без ошибок.

Пример одного массива выглядит так:

stdClass Object ( [records] => Array ( [0] => stdClass Object ( [elems] => Array ( [0] => stdClass Object ( [name] => SERVICE.d01 [list] => [length] => 15 [stype] => 1 [dtype] => 0 [permission] => 3 [message] => [cdata] => gerry@yohoo.com ) [1] => stdClass Object ( [name] => SERVICE.servdef [list] => [length] => 0 [stype] => 3 [dtype] => 0 [permission] => 1 [message] => [idata] => 2 ) ) ) ) )

Ошибка генерируется полностью из проверки клиента php. Сервер никогда не вызывается.

У кого-нибудь есть какие-либо указатели или предложения? Что мне не хватает? Какие еще данные я могу предоставить, чтобы помочь ответить на этот вопрос? Как это отладить?

0

Решение

Задача ещё не решена.

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

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