Генерировать запрос в SOAPUI с типом arrayofstring

#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: Массивов в проекте, над которым работает моя компания. Может ли кто-нибудь предоставить некоторую информацию о том, какие именно проблемы связаны с использованием таких массивов и использованием списков? Спасибо.