0
我們試圖將來自HTTP入站請求的請求參數設置爲標題。我們已經成功地將請求值設置爲標題,但是它沒有按照我們想要的方式設置。在Spring集成中將HTTP請求標題設置爲LinkedList
請求標頭映射值作爲java.util.LinkedList設置爲消息標頭,而不是String,它是預期的請求參數類型。
下面是配置
<int-http:inbound-gateway id="inboundApplicationDataRequestGateway"
supported-methods="GET"
request-channel="applicationDataRequest"
reply-channel="applicationDataResponse"
mapped-response-headers="HTTP_REQUEST_HEADERS"
path="/services/application/that/data"
reply-timeout="50000">
<int-http:header name="dataVersion" expression="#requestParams['data_version']"/>
</int-http:inbound-gateway>
<int:service-activator id="applicationDataServiceActivator"
input-channel="applicationDataRequest"
output-channel="applicationDataResponse"
ref="dataService"
method="getData"
requires-reply="false"
send-timeout="60000"/>
以下是示例服務方法
public void getData(Message<?> inMessage){
MessageHeaders headers = inMessage.getHeaders();
logger.info("DATA VERSION : " + (String)headers.get("dataVersion"));
}
以下是堆棧跟蹤
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.messaging.MessageHandlingException: java.lang.ClassCastException: java.util.LinkedList cannot be cast to java.lang.String
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
我們怎麼能有dataVersion設爲一個字符串,而不是一個鏈表?
此外,我們需要做的POST請求以下的其他HTTP入站網關的方法以及
任何幫助表示讚賞。
問候, MilindaD