#soap
#soap
Вопрос:
Я пытаюсь сгенерировать запрос SOAP внутри инструмента SOAP UI. Запрос SOAP выглядит следующим образом
<soapenv:Body><pur:purge soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<name xsi:type="xsd:string">?</name>
<pwd xsi:type="xsd:string">?</pwd>
<network xsi:type="xsd:string">?</network>
<opt xsi:type="pur:ArrayOfString" soapenc:arrayType="xsd:string[]"/>
<uri xsi:type="pur:ArrayOfString" soapenc:arrayType="xsd:string[]"/>
</pur:purgeRequest>
Я не могу понять, как передавать значения для opt и uri ?.
Я попытался указать массив uri как
<uri>
<url>url 1</url>
<url>url 2</url>
</uri>
Что неверно !.
Я также пытаюсь выполнить поиск по типу ArrayOfString, но не смог получить хорошего объяснения его использования.
Может ли кто-нибудь мне помочь?
Ответ №1:
Следующий код будет работать для вас,
<soapenv:Body><pur:purge soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<name xsi:type="xsd:string">?</name>
<pwd xsi:type="xsd:string">?</pwd>
<network xsi:type="xsd:string">?</network>
<opt xsi:type="pur:ArrayOfString" soapenc:arrayType="xsd:string[2]">
<item>Enter the value here..</item>
<item>Enter the value here..</item>
</opt>
<uri xsi:type="pur:ArrayOfString" soapenc:arrayType="xsd:string[1]">
<item>Enter the value here..</item>
</uri>
</pur:purgeRequest>
Комментарии:
1. О, и здесь много флагов «не ответ», потому что XML не был отформатирован должным образом. Это просто выглядело как «? ? ? Введите значение здесь.. Введите значение здесь.. Введите значение здесь ..» Пожалуйста, прочитайте справку по форматированию.
Ответ №2:
Боже, давно такого не видел. То, что у вас есть, — это массив SOAP ArrayOfString
soapenc:Array
, который, я полагаю, является подтипом.
Лучшим источником информации, который вы можете найти, является сама спецификация SOAP, раздел 5.4.2.Массивы.
Но обратите внимание, что массив SOAP — странный зверь, и, поскольку он был неправильно понят, он вызвал некоторые проблемы. По этой причине базовый профиль WS-I препятствует его использованию, поскольку существуют лучшие способы объявления массивов (с использованием элементов с maxOccurs="unbounded"
).
Если у вас есть контроль над веб-сервисом, я бы предложил изменить его на неограниченный список элементов.
Комментарии:
1. спасибо dpb, я изменил xsd:string[] на xsd:string[1], и это сработало! Я перейду по ссылке, связанной с массивом
2. Я пытаюсь сделать именно то, что предлагается в этом ответе — избавиться от SOAP-ENC: Массивов в проекте, над которым работает моя компания. Может ли кто-нибудь предоставить некоторую информацию о том, какие именно проблемы связаны с использованием таких массивов и использованием списков? Спасибо.