#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, где я ожидал бы его найти…