【发布时间】:2016-03-11 17:32:23
【问题描述】:
我想用 Spring Integration 发送一个肥皂消息。我使用 Java 配置。 我已经尝试了flolowing拦截器,但是spring集成将尖括号()转换为html转义字符。
import org.springframework.ws.client.WebServiceClientException;
import org.springframework.ws.client.support.interceptor.ClientInterceptor;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.SoapHeader;
import org.springframework.ws.soap.SoapHeaderElement;
import org.springframework.ws.soap.SoapMessage;
public class MyAuthInterceptor implements ClientInterceptor {
@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
SoapMessage soapMessage = (SoapMessage) messageContext.getRequest();
SoapHeader sh = soapMessage.getSoapHeader();
QName name = new QName("http://...", "myAuth", "aut");
sh.addHeaderElement(name).setText("<username>TestUser</username>" + "<password>TestPass</password>");
return true;
}
这是生成的soap头:
<SOAP-ENV:Header>
<aut:myAuth xmlns:aut="http://.../"><username>TestUser</username><password>TestPass</password></aut:myAuth>
</SOAP-ENV:Header>
这是我的配置:
@Configuration
@EnableIntegration
public class SpringIntegrationConfiguration {
@Bean
public PublishSubscribeChannel inputChannel() {
return new PublishSubscribeChannel();
}
@Bean
public ClientInterceptor myAuthInterceptor() {
return new MyAuthInterceptor();
}
@Bean
@ServiceActivator(inputChannel = "inputChannel")
public SimpleWebServiceOutboundGateway myOutput(ClientInterceptor mekAuthInterceptor) {
SimpleWebServiceOutboundGateway simpleWebServiceOutboundGateway = new SimpleWebServiceOutboundGateway("http://...");
simpleWebServiceOutboundGateway.setInterceptors(myAuthInterceptor);
return simpleWebServiceOutboundGateway;
}
}
如何在不转义尖括号的情况下设置肥皂标题?
【问题讨论】:
标签: java spring soap spring-integration