如何在Spring Integration WS中添加头元素?
我的要求是如何在Spring Integration WS中添加头元素?,spring,spring-integration,Spring,Spring Integration,我的要求是 <soapenv:Header> <tns:SubHeader> <tns:version>xyz</tns:version> </tns:SubHeader> </soapenv:Header> 使用此选项,我可以在中添加。 如何在此请求中添加xyz。您可以使用映射请求头创建简单的SOAP头 <ws:outbound-gateway uri="http://b
<soapenv:Header>
<tns:SubHeader>
<tns:version>xyz</tns:version>
</tns:SubHeader>
</soapenv:Header>
使用此选项,我可以在
中添加
。
如何在此请求中添加
xyz
。您可以使用映射请求头创建简单的SOAP头
<ws:outbound-gateway uri="http://blah/blah"
mapped-request-headers="foo" />
...
对于任何更复杂的内容,我相信您需要使用自定义消息工厂,或者客户端拦截器来处理消息。使用拦截器,例如:
<int-ws:outbound-gateway
uri="${services.mobileApprove}" request-channel="mobileApproveService"
message-sender="mobileApproveMessageSender"
interceptor="soapHeaderElementAdder"/>
}Thanks@Gary.. 你能帮助我如何使用自定义消息工厂实现吗?拦截器路由可能要容易得多,但我自己还没有做过;我得和你一样想清楚。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header foo="bar"/>
...
<int-ws:outbound-gateway
uri="${services.mobileApprove}" request-channel="mobileApproveService"
message-sender="mobileApproveMessageSender"
interceptor="soapHeaderElementAdder"/>
public class
UserContextSoapElementAdder implements org.springframework.ws.client.support.interceptor.ClientInterceptor {
Logger logger = LoggerFactory.getLogger(UserContextSoapElementAdder.class);
@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
try {
Object si = messageContext.getProperty("si");
SoapMessage soapMessage = (SoapMessage) messageContext.getRequest();
SoapHeader sh = soapMessage.getSoapHeader();
SoapHeaderElement soapHeaderInformation = sh.addHeaderElement(new QName("http://harmoni-integration.yamanyar.com.tr", "si",
""));
//work with soapHeaderInformation
} catch (Exception e) {
logger.error("Cannot add user context soap header!", e);
}
return true;
}
@Override
public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException {
return true;
}
@Override
public boolean handleFault(MessageContext messageContext) throws WebServiceClientException {
return true;
}