Получение SOAP::Lite для исключения типов в запросах

#web-services #perl #soap #soap-client #soaplite

#веб-сервисы #perl #soap #soap-клиент #soaplite

Вопрос:

Я пытаюсь получить сценарий Perl, используя SOAP::Lite для общения с веб-службой.

У меня есть WSDL для службы, но некоторые поля имеют свой тип, определенный как complexType / simpleType без указания имени.

Сервер проверяет информацию о вводе, которую я отправляю с запросом, но не выполняет ее из-за неправильного указания типа.

Как я могу преодолеть эту проблему? Кажется, что сервер доволен, если я опускаю информацию о вводе в ручном запросе, но я изо всех сил пытаюсь заставить SOAP ::Lite не выдавать тип (если я его не указываю, он угадывает один). Другим вариантом было бы указать тип, который ожидает сервер, но я не смог выяснить, что это такое. (Предоставление необработанного XML также будет работать, но он кажется грязным …)

WSDL для такого поля:

   <xs:element name="Description">
    <xs:annotation>
      <xs:documentation>Free text field</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="4000"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
 

Я пытался пометить его как xs:string , но это тоже не принято.

Ответ №1:

Из документации

автотипирование ()

Ярлык для сериализатора-> autotype(). Это позволяет вам указать, будет ли сериализатор пытаться выполнить автотипирование для вас или нет. Значение по умолчанию равно true.

Так что отключите это.

Комментарии:

1. Спасибо! Конечно, это не было задокументировано в perldoc, где я ожидал бы его найти…