在生成的JAX-WS客户端

问题描述

我已经从WSDL文件生成了可使用Web服务的类。 现在,我需要在 -Tag中添加特定的'Id'-Attribute。 带有示例XML-Output

<S:Body>
    <Object>...</Object>
</S:Body>

我可以轻松地修改“对象”的指定属性或子元素。 但是我不知道如何向“身体部位”添加属性

通过将端口强制转换为WSBindingProvider,我可以添加Headers(预定义或自定义的)。有没有机会做类似的事情来修改身体的属性

编辑: 为了澄清我的问题: 我想要的输出应如下所示:

<S:Body Id="123">
    <Object>...</Object>
</S:Body>

解决方法

我相信我可以帮助您解决您的问题。就像写 body.setAttribute("Id","123"); 一样简单;

现在,身体,您可以通过多种方式获得。如果你有一个 SOAPMessage myMsg 你可以这样做:

SOAPPart part = myMsg.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
SOAPBody body = envelope.getBody();
body.setAttribute("Id","123");

如果您有 SaajSoapMessage,您可以获取正文并设置如下属性:

SaajSoapMessage message = (SaajSoapMessage) messageRequest;
SOAPMessage mes = message.getSaajMessage();
SOAPBody body = mes.getSOAPBody();
body.setAttribute("Id","123");