【发布时间】:2015-08-07 13:54:13
【问题描述】:
在发送 SOAP 消息时,我想添加一些自定义标头,所以我如下所示;
JAXBElement<ConfigurationResponse> jaxbElementResponse = (JAXBElement<ConfigurationResponse>) getWebServiceTemplate()
.marshalSendAndReceive(urlToSend,
new ObjectFactory().createConfigurationRequest(request),
new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
SaajSoapMessage soapMessage = (SaajSoapMessage) message;
SoapHeaderElement id = soapMessage.getSoapHeader().addHeaderElement(new QName(uri, localpart, prefix));
id.setText(text);
}
});
但是“NetBeans”告诉我我可以使用 lambda expr。因此,如果我进行更改,就像,
JAXBElement<ConfigurationResponse> jaxbElementResponse = (JAXBElement<ConfigurationResponse>) getWebServiceTemplate()
.marshalSendAndReceive(urlToSend,
new ObjectFactory().createConfigurationRequest(request), (WebServiceMessage message) -> {
SaajSoapMessage soapMessage = (SaajSoapMessage) message;
SoapHeaderElement id = soapMessage.getSoapHeader().addHeaderElement(new QName(uri, localpart, prefix));
id.setText(text);
});
两者都一样吗?如果是,它是如何工作的?
【问题讨论】:
-
不一样,更好!特别是它不会捕获
this对象。 -
@TagirValeev:太好了!但我不明白这是如何工作的。例如,即使不提及方法名称,它如何使用
doWithMessage()?