Хобрук: Ваш путь к мастерству в программировании

SoapClient: обнаружение необязательных/обязательных аргументов?

Каков самый простой (или любой) способ выяснить, является ли конкретный аргумент для вызова мыла необязательным/обязательным? В настоящее время я использую SoapClient (в режиме WSDL) для создания функций, подобных SoapUI. Единственное, что мне еще нужно на данный момент, это определить необязательные и обязательные параметры.

08.05.2014

Ответы:


1

Если вы проверите файл WSDL для своей веб-службы, вы увидите схему запроса. Необязательный/обязательный зависит от атрибутов minOccurs и maxOccurs элементов этого xsd. По умолчанию minOccurs и maxOccurs для <xsd:element>, <xsd:sequence>, <xsd:all>, <xsd:choice>... равны 1, поэтому по умолчанию требуются все элементы. Если есть элементы с атрибутом minOccurs="0", то эти элементы будут необязательными.

то есть у вас есть этот xsd:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string"/>
      <xs:element name="shipto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string" minOccurs="0"/>
            <xs:element name="country" type="xs:string" minOccurs="0"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="item">
        <xs:complexType>
          <xs:sequence minOccurs="0">
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

В приведенном выше xsd элементы <city> и <country> в последовательности <shipto> являются необязательными. Последовательность <item> также необязательна, и если появляется <item>, то <note> в этой последовательности также не является обязательной. Остальные обязательны.

Надеюсь это поможет,

12.05.2014
  • Да, я так и сделал. Естественно, нет ни одного WSDL, который не использует зависимые XML для определения типов, поэтому в итоге я позаимствовал код из [github.com/staabm/soap-client-generator/blob/master/, чтобы включить все импорты/включения/wsdl. Ваши ответы совершенно ясны и решили бы проблему для меня, если бы я все еще застрял, так что спасибо за усилия :) 12.05.2014
  • Так что я опоздал... в любом случае спасибо за согласие :). 13.05.2014
  • Поздно для меня, но, надеюсь, очень своевременно для всех остальных с тем же вопросом :) 13.05.2014
  • Новые материалы

    Управление DOM для чайников вроде меня
    Одной из первых вещей, которую мы рассмотрели, когда начали изучать Javascript во Flatiron, была модель DOM. Кто он? Чем он занимается? Он больше машина, чем человек? Ну да довольно много. ДОМ..

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

    Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
    На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..