我正在从 WSDL 创建一个 Web 服务客户端。
对服务的典型 SOAP 请求如下所示
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:someGateway">
<soapenv:Header/>
<soapenv:Body>
<urn:send>
<urn:message>
<urn:messageID>1001</urn:messageID>
<urn:messageBody>
<DataContainer>
SOME MORE ELEMENTS
</DataContainer>
</urn:messageBody>
</urn:message>
</urn:send>
</soapenv:Body>
</soapenv:Envelope>
我使用 JAX-WS 生成服务工件并填充我的对象,如下所示:
Message message = objectFactory.createMessage();
//Set message ID
String messageID = "123456"
message.setMessageID(messageID );
//Set message Body
MessageBody messageBody = objectFactory.createMessageMessageBody()
messageBody 对象只有 1 个方法 messageBody.setAny(value)。但我需要在其中放置一个 DataContainer 元素。
我试过通过:
- org.w3c.dom.DocumentObject(我得到“javax.xml.ws.soap.SOAPFaultException:无法处理请求。”)可能是由于 xml decleration。
- 由 JAXB 从 XSD 生成的DataContainer对象(我得到“[javax.xml.bind.JAXBException: class DataContainer nor any super class is known to this context]”)
- JAXBElement(我得到“[javax.xml.bind.JAXBException: class DataContainer is not known to this context]”)
我究竟做错了什么?或者我需要做什么才能在消息正文中获取 DataContainer