SoapUI在消息中使用mesagename而不是operationname

时间:2013-06-28 10:58:41

标签: soap wsdl soapui

我遇到了由第三方提供的服务wsdl的问题。让我尝试解释一下。拿这个wsdl部分:

<wsdl:portType name="IBestelService">
      <wsdl:operation name="PlaatsOrder">
         <wsdl:input message="tns:PlaatsOrderRequest"/>
         <wsdl:output message="tns:PlaatsOrderResponse"/>
         <wsdl:fault message="tns:BestelServiceFault" name="BestelServiceFault"/>
      </wsdl:operation>
      <wsdl:operation name="PlaatsOrderThreeShips">
         <wsdl:input message="tns:PlaatsOrderRequestThreeShips"/>
         <wsdl:output message="tns:PlaatsOrderResponseThreeShips"/>
         <wsdl:fault message="tns:BestelServiceFault" name="BestelServiceFault"/>
      </wsdl:operation>
   </wsdl:portType>

对于请求,soapui(和.net to)生成以下请求:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sambo-ict:basetypes:1.0" xmlns:urn1="urn:sambo-ict:bestelservice:types:1.0">
   <soapenv:Header>
      <urn:AuthenticationHeader xmlns="urn:sambo-ict:basetypes:1.0"/>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:PlaatsOrderRequest>
         <EAN>9789490998394</EAN>
         <DistributorOrderId>13188</DistributorOrderId>
         <DeliveryMethod>Tegoed</DeliveryMethod>
         <Amount>1</Amount>
      </urn1:PlaatsOrderRequest>
   </soapenv:Body>
</soapenv:Envelope>

但是,第三方网站上的服务需要这个

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sambo-ict:basetypes:1.0" xmlns:urn1="urn:sambo-ict:bestelservice:types:1.0">
   <soapenv:Header>
      <urn:AuthenticationHeader xmlns="urn:sambo-ict:basetypes:1.0"/>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:PlaatsOrder>
         <EAN>9789490998394</EAN>
         <DistributorOrderId>13188</DistributorOrderId>
         <DeliveryMethod>Tegoed</DeliveryMethod>
         <Amount>1</Amount>
      </urn1:PlaatsOrder>
   </soapenv:Body>
</soapenv:Envelope>

当我用肥皂搜索互联网时。 “plaatsorder”而不是“plaatsorderrequest”似乎是正确的方式。但是我不相信soapui / java和.net都错了。那么有人可以向我解释这个区别吗?

2 个答案:

答案 0 :(得分:1)

元素:

<wsdl:input message="tns:PlaatsOrderRequest"/>

将有一个关联的消息条目,如下所示:

<wsdl:message name="PlaatsOrderRequest">
    <wsdl:part element="urn1:PlaatsOrderRequest" name="parameters" />
</wsdl:message>

该元素名称决定了包装的请求元素,假设这是一个文档/文字包装服务(它们通常是这样)。我需要完整的WSDL和架构才能更明确。

答案 1 :(得分:0)

您可以在wsdl中自行进行此更改。只需更换标签即可轻松完成。它会工作。 顺便说一句,你可以通过提供正确的wsdl来直接询问你的客户。他们很容易生成带有所需请求标记的wsdl。