2016-03-24 54 views
0

我使用SimpleWebServiceInboundGateway處理SOAP請求。如何在Spring集成中獲得肥皂標題?

這裏是一塊我的代碼:

@Router(defaultOutputChannel = "unsupportedOperation", inputChannel = "wsRequestChannel") 
public String route(Message message) { 
    String soapAction = (String)message.getHeaders().get(WS_SOAP_ACTION); 
    ... 
} 

@Bean 
public SimpleWebServiceInboundGateway wsInboundGateway(){ 
    SimpleWebServiceInboundGateway simpleWebServiceInboundGateway = new SimpleWebServiceInboundGateway(); 
    simpleWebServiceInboundGateway.setRequestChannelName("wsRequestChannel"); 
    simpleWebServiceInboundGateway.setReplyChannelName("wsResponseChannel"); 
    simpleWebServiceInboundGateway.setErrorChannelName("wsErrorChannel"); 
    return simpleWebServiceInboundGateway; 
} 

傳入的SOAP信封包含SOAP標頭:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    <soapenv:Header> 
     <myAuth> 
     <username>user</username> 
     <password>pass</password> 
     </myAuth> 
    </soapenv:Header> 
    <soapenv:Body> 
    ... 

在我的路由器的消息對象不包含標題數據。我如何提取用戶名和密碼?

回答

0

要映射SOAP標頭,您需要將自定義的DefaultSoapHeaderMapper添加到網關;您可以通過告訴它您要映射哪個標頭來自定義映射器...

mapper.setRequestHeaderNames(「STANDARD_REQUEST_HEADERS」,「myHeader」);

映射頭必須匹配頭的限定QName。 STANDARD_REQUEST_HEADERS(默認值)映射SoapAction。

答覆標題有類似的映射。