Задать вопрос

Почему WSDL не проходит валидацию в Eclipse?

Господа и, возможно, дамы... Помогите пожалуйста с валидностью WSDL. Паспорт - простейший, приведу код.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://localhost/auth/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="auth" targetNamespace="http://localhost/auth/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://localhost/auth">
      <xsd:element name="login">
        <xsd:complexType>
          <xsd:sequence>
          	<xsd:element name="id" type="xsd:int" />
          	<xsd:element name="login" type="xsd:string"></xsd:element>
          	<xsd:element name="password" type="xsd:string"></xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="loginResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="out" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="loginRequest">
    <wsdl:part name="parameters" element="tns:login"/>
  </wsdl:message>
  <wsdl:message name="loginResponse">
    <wsdl:part name="parameters" element="tns:loginResponse"/>
  </wsdl:message>
  <wsdl:portType name="auth">
    <wsdl:operation name="login">
      <wsdl:input message="tns:loginRequest"/>
      <wsdl:output message="tns:loginResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="authSOAP" type="tns:auth">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="login">
      <soap:operation soapAction="http://localhost/auth/login"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="auth">
    <wsdl:port binding="tns:authSOAP" name="authSOAP">
      <soap:address location="http://localhost/auth/auth.php"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

пишет соответственно две ошибки, одного типа.
Первый блок:
<wsdl:message name="loginRequest">
    <wsdl:part name="parameters" element="tns:login"/>
  </wsdl:message>

The part 'parameters' has an invalid value 'login' defined for its element. Element declarations must refer to valid values defined in a schema

Второй блок:
<wsdl:message name="loginResponse">
    <wsdl:part name="parameters" element="tns:loginResponse"/>
  </wsdl:message>

The part 'parameters' has an invalid value 'loginResponse' defined for its element. Element declarations must refer to valid values defined in a schema

Как такое может быть если учесть что они определены в этом документе???
P.S.: SoapUI выдает вообще чушь, см. ниже.
Запрос:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auth="http://localhost/auth/">
   <soapenv:Header/>
   <soapenv:Body>
      <auth:login/>
   </soapenv:Body>
</soapenv:Envelope>

Ответ:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring>Procedure 'login' not present</faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

UPD: Функция принимает на входе ID, login и password, в ответ выдает просто строку (пока что, но это не суть).
UPD2: WSDL Генерировал в Eclipse Luna, в SoapUI запрос руками не правил.
  • Вопрос задан
  • 2696 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
uakoB
@uakoB Автор вопроса
не используйте SOAP
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы