如何从请求中的元素的几个属性中删除“new”前缀到SOAP服务?

时间:2016-01-16 11:47:52

标签: xml soap wsdl cxf jax-ws

我有一个wsdl。使用wsdl2java我创建了java类并添加了实现。之后,我在SOAP UI中创建项目,我收到下一个请求的xml: enter image description here

问题是我有硬编码的客户端,它将使用此Web服务的一个操作,如果存在new前缀,客户端将无法工作。 如何从AuthData元素的newlogin属性中删除password前缀?

更新

当我这样称呼网络服务时:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sin="http://my.comp/2010/webservice/Service" xmlns:new="http://www.webservice.namespace">
   <soapenv:Header/>
   <soapenv:Body>
      <sin:AuthData>
         <!--Optional:-->
         <new:login>121212</new:login>
         <!--Optional:-->
         <new:password>12121</new:password>
      </sin:AuthData>
   </soapenv:Body>
</soapenv:Envelope>

它工作正常。但是当我删除prefic new时,我收到了错误:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>Unmarshalling Error: unexpected element (uri:"", local:"login"). Expected elements are &lt;{http://new.webservice.namespace}login>,&lt;{http://new.webservice.namespace}password></faultstring>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

正如我所说,问题不是cl;客户无法使用new前缀发送请求。

1 个答案:

答案 0 :(得分:0)

完美的一天:提出问题并自己回答。一段时间以后。 在我的情况下,我需要更正package-info.java课程并将elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)更改为UNQUALIFIED。如果在构建类中由 jaxb2-maven-plugin 自动生成(在我的情况下由于项目结构而无法使用),可以避免这些问题。