我有一个wsdl。使用wsdl2java我创建了java类并添加了实现。之后,我在SOAP UI中创建项目,我收到下一个请求的xml:
问题是我有硬编码的客户端,它将使用此Web服务的一个操作,如果存在new
前缀,客户端将无法工作。
如何从AuthData元素的new
和login
属性中删除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 <{http://new.webservice.namespace}login>,<{http://new.webservice.namespace}password></faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
正如我所说,问题不是cl;客户无法使用new
前缀发送请求。
答案 0 :(得分:0)
完美的一天:提出问题并自己回答。一段时间以后。
在我的情况下,我需要更正package-info.java
课程并将elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
更改为UNQUALIFIED
。如果在构建类中由 jaxb2-maven-plugin 自动生成(在我的情况下由于项目结构而无法使用),可以避免这些问题。