我将我的web服务部署到了tomcat。在wsdl文件中,绑定部分是:
<binding name="mywsPortBinding" type="tns:mywsInterface">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="update">
<soap:operation soapAction=""/>
<input> <soap:body use="literal"/> </input>
<output> <soap:body use="literal"/> </output>
</operation>
</binding>
我的问题:为什么输入和输出类型显示为&#34;字面值&#34;? 作为响应,该web服务根据指定的xsd发送回某些xml-complextyped数据。为什么没有在wsdl中显示copmlex类型名称?
答案 0 :(得分:1)
在&#39; literal&#39;的情况下,抽象类型定义本身成为具体定义(它们是文字和定义)。在这种情况下,您只需检查XML Schema类型定义即可确定具体的消息格式。例如,文档/文字绑定的操作在线上看起来像这样:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>
<SOAP-ENV:Body>
<m:Add xmlns:m="http://example.org/math/types/">
<x>3.14159265358979</x>
<y>3.14159265358979</y>
</m:Add>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
请注意,SOAP Body只包含Add的实例 模式中定义的元素 - 这就是使document / literal如此的原因 有吸引力的。
答案 1 :(得分:0)
在绑定中,“literal”仅定义了所使用的编码样式,复杂的Type名称显示在“wsdl:message”定义中,该定义在“wsdl:portType”中的“wsdl:operation”中使用。
你应该有这样的东西。 `
<xs:element name="update" type="tns:update"/>
<xs:complexType name="update">
<xs:sequence>
<xs:element name="arg0" type="xs:string"/>
<xs:element name="arg1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="updateResponse" type="tns:updateResponse"/>
<xs:complexType name="updateResponse">
<xs:sequence>
<xs:element name="arg0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<wsdl:message name="update">
<wsdl:part element="tns:update" name="parameters"/>
</wsdl:message>
<wsdl:message name="updateResponse">
<wsdl:part element="tns:updateResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="mywsInterface">
<wsdl:operation name="update">
<wsdl:input message="tns:update" name="update"/>
<wsdl:output message="tns:updateResponse" name="updateResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="mywsPortBinding" type="tns:mywsInterface">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="update">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="update">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="updateResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
` 您可以找到更多详细信息和示例here