SOAP请求负载

时间:2012-07-06 10:56:34

标签: java web-services java-ee jax-ws

我有一个webservice,请求有效负载如下

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:poc="http://www.poc.mbo.demo.com">
<soapenv:Header/>
<soapenv:Body>
  <poc:doTransaction>
     <!--Optional:-->
     <dealerid>1</dealerid>
     <!--Optional:-->
     <partid>1</partid>
     <!--Optional:-->
     <quantity>2</quantity>
     <!--Optional:-->
     <orderdate>12-DEC-2012</orderdate>
  </poc:doTransaction>
</soapenv:Body>
</soapenv:Envelope>

但是,如果我尝试这样做,它没有给出任何回应。可能是什么问题

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:poc="http://www.poc.mbo.demo.com">
<soapenv:Header/>
<soapenv:Body>
   <poc:doTransaction>
     <!--Optional:-->
      <poc:dealerid>1</poc:dealerid>
      <!--Optional:-->
     <poc:partid>1</poc:partid>
     <!--Optional:-->
     <quantity>2</quantity>
     <!--Optional:-->
     <poc:orderdate>12-DEC-2012</poc:orderdate>
  </poc:doTransaction>
 </soapenv:Body>
</soapenv:Envelope>

2 个答案:

答案 0 :(得分:0)

第一个示例中的doTransaction元素不在http://www.poc.mbo.demo.com命名空间中。

您的请求未通过验证(假设已启用验证)或服务器忽略无效元素并将请求视为等效于:

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  
    xmlns:poc="http://www.poc.mbo.demo.com">
<soapenv:Header/>
<soapenv:Body>
  <poc:doTransaction />
</soapenv:Body>
</soapenv:Envelope>

答案 1 :(得分:0)

根据ur服务的WSDL,元素将与命名空间(XSD)相关联,但其他元素可能是另一个命名空间(XSD)的一部分,

要理解这一点,只需检查WSDL的类型部分和操作,检查哪个类型(元素)与哪个XSD相关联..你可以很容易地理解它是否失败..

将名称空间视为导入类并键入,因为它是状态之一(:)只是为了便于理解)