WADL: сложный тип из внешнего xsd - PullRequest
3 голосов
/ 15 декабря 2010

Мне нужно проверить процедуру аутентификации, используя файл wadl ниже:

<application xmlns="http://research.sun.com/wadl/2006/10" 
         xmlns:sis="http://sis.thecompany.com/" >
<grammars>
    <include href="http://localhost/wadl/sis.xsd"/>
</grammars>
<resources base="http://192.168.10.139">
    <resource path="/user/sign_in">
        <method name="POST" id="Authentication">
            <request>
                <param name="user" type="sis:user" required="true"/>
                <representation mediaType="application/xml" element="sis:user"/>
            </request>
            <response status="201">
                <representation mediaType="application/xml"/>
                <fault status="401" />
            </response>
        </method>
    </resource>
</resources>

После импорта этого файла в soapUI Pro я не получил никаких действий, нажав кнопку «Запрос». Причина в том, что soapUI Pro не видит элемент "sis: user", как он представлен в xsd, и подумал, что это всего лишь один элемент с неопределенным типом. Можете ли вы посоветовать, что с файлом wadl что-то не так?

Ниже приведена схема sis.xsd:

<?xml version="1.0" encoding="utf-8"?> <xs:schema id="SIS" targetNamespace="http://sis.thecompany.com/" elementFormDefault="qualified" xmlns="http://sis.thecompany.com/" xmlns:mstns="http://sis.thecompany.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0"> <xs:element name="application"> <xs:complexType> <xs:all> <xs:element name="user" minOccurs="0"> <xs:xs:complexType> <xs:all minOccurs="1"> <xs:element name="login" type="xs:string" /> <xs:element name="password" type="xs:string" /> </xs:all> </xs:complexType> </xs:element> </xs:all> </xs:complexType> </xs:element> </xs:schema>

И следующий вопрос. Если soapUI Pro исправит синтаксический разбор пользователя элемента complexType из xsd - POST-данные из soapUI Pro будут следующими:

<sis:user><sis:login>admin</sis:login><sis:password>admin!</sis:password></sis:user>

Но это будет отклонено сервером из-за дополнительного префикса 'sis:'. Сервер поддерживает только следующий формат

<user><login>admin</login><password>admin!</password></user>

Пожалуйста, совет.

1 Ответ

0 голосов
/ 15 декабря 2010

Лучший совет, который я могу дать, - прекратить использование WADL.Найдите подходящую библиотеку HTTP и парсер XML на любом языке, который вы используете, и создайте свой XML-файл и отправьте его.Для этого нужно всего несколько строк кода.

Используя WADL и xsd, как вы делаете, все, чего вы добиваетесь, - это создание тесной связи между клиентом и сервером.Это сведет на нет большинство преимуществ системы REST.Вы могли бы также придерживаться SOAP, по крайней мере, инструменты уже готовы.

...