2012-02-06 4 views
2

나는 그것이 WSDL에 관해서 무식하다는 것을 인정할 것이다. 내가 작업하고있는 프로젝트에 대해 다음 WSDL이 제공되었지만 작동하지 않습니다. 다음은 현재 사용중인 WSDL의 게시물입니다. wsdl에서 서비스에 대한 실제 URL을 제거하여 크롤러가 색인을 생성하지 못하도록 요청했습니다. 실제 URL은 'www.testsite.org'로 바뀌 었습니다. 다음은 XML입니다 :WSDL에서 프록시 클래스를 만드는 중 오류가 발생했습니다. 요소가 누락 되었습니까?

<wsdl:definitions xmlns:tns="https://www.testsite.org/uiws-test" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="uiicon" targetNamespace="https://www.testsite.org/uiws-test"> 
<!-- TYPES --> 
<wsdl:types> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.testsite.org/uiws-test"> 
<xsd:complexType name="ResponseType"> 
<xsd:sequence> 
<xsd:element name="request_id" type="xsd:string"/> 
<xsd:element name="messages" type="xsd:string"/> 
</xsd:sequence> 
</xsd:complexType> 
<xsd:element name="responseType" type="tns:ResponseType"/> 
<xsd:element name="ICON_MessageTrain" type="xsd:string"/> 
<xsd:element name="fault" type="xsd:string"/> 
</xsd:schema> 
</wsdl:types> 
<!-- MESSAGES --> 
<wsdl:message name="RequestMessage"> 
<wsdl:part name="ICON_MessageTrain" element="tns:ICON_MessageTrain"/> 
</wsdl:message> 
<wsdl:message name="ResponseMessage"> 
<wsdl:part name="response" element="tns:responseType"/> 
</wsdl:message> 
<wsdl:message name="FaultMessage"> 
<wsdl:part name="fault" element="tns:fault"/> 
</wsdl:message> 
<wsdl:message name="SourceHeader"> 
<wsdl:part name="source" element="xsd:string"/> 
</wsdl:message> 
<wsdl:message name="ApplicationHeader"> 
<wsdl:part name="application" element="xsd:string"/> 
</wsdl:message> 
<!-- PORT TYPES --> 
<wsdl:portType name="uiicon_portType"> 
<wsdl:operation name="uiicon"> 
<wsdl:input message="tns:RequestMessage"/> 
<wsdl:output message="tns:ResponseMessage"/> 
<wsdl:fault message="tns:FaultMessage" name="FaultMessage"/> 
</wsdl:operation> 
</wsdl:portType> 
<!-- BINDINGS --> 
<wsdl:binding name="uiicon_binding" type="tns:uiicon_portType"> 
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
<wsdl:operation name="uiicon"> 
<soap:operation soapAction="https://www.testsite.org/uiws-test/services/uiicon-test" style="document"/> 
<wsdl:input> 
<soap:header part="source" message="tns:SourceHeader" use="literal"/> 
<soap:header part="application" message="tns:ApplicationHeader" use="literal"/> 
<soap:body use="literal"/> 
</wsdl:input> 
<wsdl:output> 
<soap:body use="literal"/> 
</wsdl:output> 
<wsdl:fault name="FaultMessage"> 
<soap:fault name="FaultMessage" use="literal"/> 
</wsdl:fault> 
</wsdl:operation> 
</wsdl:binding> 
<!-- SERVICES --> 
<wsdl:service name="uiicon_service"> 
<wsdl:documentation> 
This is the web service for UI-ICON data exchange modernization project 
</wsdl:documentation> 
<wsdl:port name="uiicon_port" binding="tns:uiicon_binding"> 
<soap:address location="https://www.testsite.org/uiws-test/services/uiicon-test"/> 
</wsdl:port> 
</wsdl:service> 
</wsdl:definitions> 

내가 wsdl.exe에서이 프로그램을 실행할 때, 나는 다음과 같은 오류 얻을 :

  • 작업을 가져올 수 없습니다 'uiicon을'.
  • 요소 'http://www.w3.org/2001/XMLSchema:string'는 WSDL이 w3.org 2001 스키마를 참조하고 어디보고, 내가 문자열 스키마를 참조

누락 참고. 무엇이 좋아 보이고 왜 틀린 지 확신하지 못합니다. 고맙습니다! 당신이 element로 : 당신의 SourceHeaderApplicationHeader 참조에 type

<wsdl:message name="ApplicationHeader"> 
    <wsdl:part name="application" type="xsd:string"/> 
</wsdl:message> 
<wsdl:message name="SourceHeader"> 
    <wsdl:part name="source" type="xsd:string"/> 
</wsdl:message> 

을 즉를 element을 변경하는 경우

답변

2

은 WSDL은 미리 정의 된 단순하거나 복잡한 유형을 참조 유효합니다. 그러나 여기서는 xsd:string 유형의 새 요소 (application/source라고 함)를 정의합니다. 따라서 type을 사용해야합니다.

필자가 보는 한, 단순히 문자열을 포함하는 응용 프로그램이라는 단일 메시지 부분을 원할뿐입니다. 수정 사항이이 작업을 수행하고 WSDL이 유효해야합니다. 비록 실제 웹 서비스가 받아 들일/보낼지 보장 할 수 없다. 왜냐하면 그 설명은 무효이다 ...

+0

고마워요! 이 정보를 다시 서비스 제공 업체에 보내면 작동하는 것으로 보이는 업데이트가 만들어졌습니다. –

+0

잘 듣고, 도움이되어서 기쁩니다! – joergl

1

나는 받아 들일 수있는 대답이 그것을 밖으로 만든다라고 생각하지 않는다. 있다.

WSDL 1.1 spec, section 2.3.1 Message Parts을 읽었을 때이 WSDL이 유효해야합니다.

요소 나 유형을 사용해야하는지 여부를 결정하는 핵심 항목 중 하나는 바인딩 스타일 (rpc 대 문서, 리터럴 대 인코딩 됨)을 기반으로합니다. article that the answer references과 마찬가지로 An answer to a similar question이 더 자세히 기록됩니다.

이 WSDL은 document/literal 바인딩을 사용하기 때문에 type over 요소를 사용하는 것이 정확하다고 생각됩니다.

관련 문제