使用SoapUI中未显示的相同元素的SOAP请求和响应

时间:2014-01-16 10:03:39

标签: java soap soapui spring-ws

当一个人通常创建一个SOAP请求和响应元素时,它将以__ Request和_ _Response结束,SoapUI会在您导入WSDL时将其拾取。

<xs:element name="SampleRequest">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Testing" type="xs:string" />  
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="SampleResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Testing" type="xs:string" />  
        </xs:sequence>
    </xs:complexType>
</xs:element>

我正在忙着转换一段旧的VB6代码,而DTD的SOAP等价物将使用相同的元素进行请求和响应:

<xs:element name="Sample">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Testing" type="xs:string" />  
        </xs:sequence>
    </xs:complexType>
</xs:element>

我可以在XSD中设置一些东西,以便SOAPUI将Sample作为请求和响应来接收吗?

2 个答案:

答案 0 :(得分:2)

当SOAPUI读取WSDL时,它使用wsdl:message元素中定义的元素(因此使用元素名称),该元素从wsdl:operation元素作为请求,响应和可选错误引用。你对XSD所做的一切都不会改变它。元素也不必以“请求”作为请求结束(对于响应也是如此)。

答案 1 :(得分:0)

通过将所有SampleRequest和SampleResponse替换为Sample并删除现在重复的wsdl:message来解决它:

...


<wsdl:message name="Sample">
    <wsdl:part element="tns:Sample" name="Sample">
    </wsdl:part>
</wsdl:message>

<wsdl:portType name="SampleSoapService">
    <wsdl:operation name="Sample">
        <wsdl:input message="tns:Sample" name="Sample">
        </wsdl:input>
        <wsdl:output message="tns:Sample" name="Sample">
        </wsdl:output>
    </wsdl:operation>
</wsdl:portType>

<wsdl:binding name="SampleSoapServiceSoap11" type="tns:SampleSoapService">
    <soap:binding style="document"
        transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="Sample">
        <soap:operation soapAction="" />
        <wsdl:input name="Sample">
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output name="Sample">
            <soap:body use="literal" />
        </wsdl:output>
    </wsdl:operation>
</wsdl:binding>
<wsdl:service name="SampleSoapServiceService">
    <wsdl:port binding="tns:SampleSoapServiceSoap11" name="SampleSoapServiceSoap11">
        <soap:address location="http://localhost:8080/paygate-SampleSoapService/ws/SampleSoapService" />
    </wsdl:port>
</wsdl:service>