我有HttpRequestExecutingMessageHandler
应该对端点URI发出HTTP GET请求,并且对于每个请求,它应该传递两个URL参数,其中包含从流动消息的头部获取的值。如何获取Message
的标头值并将其应用于通过HttpRequestExecutingMessageHandler
发出的每个请求?
到目前为止,我尝试按如下方式配置处理程序:
SpelExpressionParser expressionParser = new SpelExpressionParser();
Map<String, Expression> uriVariableExpressions = new HashMap<String, Expression>(2);
uriVariableExpressions.put("userId", expressionParser.parseExpression("headers.userId"));
uriVariableExpressions.put("roleId", expressionParser.parseExpression("headers.roleId"));
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler(uri);
handler.setHttpMethod(HttpMethod.GET);
handler.setUriVariableExpressions(uriVariableExpressions);
但是,当消息流过并发出HTTP请求时,Message
的userId和roleId标头值不会在请求的URL中设置为参数。调试时,我可以看到Message的标题和值肯定在流动的Messages中。 spel表达式是否正确?
谢谢, PM
答案 0 :(得分:1)
您的uri
必须有占位符来替换您的变量,例如:
http://foo.com/service?userId={userId}&roleId={roleId}
从另一方面,当您发送消息时,请显示您的uri
和日志。