2015-04-30 3 views
1

Возможно ли, чтобы операция SOAP, определенная в файле WSDL, имела несколько выходов?Может ли операция SOAP иметь несколько выходов?

Пример:

<operation name="getUserInfo"> 
    <input message="getUserIdRequest"/> 
    <output message="getUserNameResponse"/> 
    <output message="getUserEmailResponse"/> 
</operation> 

Поправьте меня, если я ошибаюсь, то ответ должен быть не потому, что метод возвращает только один элемент. Если да, то что я могу сделать, чтобы получить несколько данных, используя только одну операцию?

+0

Нет, у вас не может быть 2 выходных значений. Вы можете построить выходное значение, которое содержит несколько значений. – Jens

+0

Вы имеете в виду что-то вроде этого? '<имя сообщения = "getTermResponse"> <имя = типа части "имя"= "хз: строка"/> <часть имени = тип "электронная почта"= "хз: строка"/> ' '<операция имя = "GetUserInfo"> <вход сообщение = "getUserInfoRequest"/> <исходящее сообщение = "getUserInfoResponse"/> ' –

+0

Да что-то вроде этого – Jens

ответ

1

То, что вы хотите достичь, выполняется с помощью массивов. Вы можете использовать сложные типы, а атрибут maxOccurs - unbounded, чтобы создать массив типа элементов в ответе.

Вот пример такого типа:

<s:complexType name="MatterListType"> <!-- List --> 
     <s:sequence> 
      <s:element name="MatterItem" type="tns:MatterItemType" minOccurs="0" maxOccurs="unbounded"/> 
     </s:sequence> 
    </s:complexType> 

Заканчивать this other answer of mine от некоторое время назад, когда я объясню, как это делается более подробно.

Если вам просто нужно несколько разных полей вывода, а не массивы, определите сам ответ как сложный тип (вы также можете увидеть это в приведенном выше примере).

Надеюсь, это поможет, сообщите мне, смогу ли я помочь вам дальше! Удачи.

+0

На самом деле, ваш другой ответ - это то, что действительно поможет мне :) –

+0

Не имеет значения, важно то, что вы узнали, чего хотите! Рад помочь :) –

Смежные вопросы