Spring integration 带有url参数表达式的Spring集成HttpRequestExecutingMessageHandler
我有一个Spring integration 带有url参数表达式的Spring集成HttpRequestExecutingMessageHandler,spring-integration,spring-el,Spring Integration,Spring El,我有一个HttpRequestExecutingMessageHandler,它应该向端点URI发出HTTP GET请求,并且对于每个请求,它应该传递两个URL参数,其中的值是从流动消息的头中获得的。如何获取消息的头值,并将其应用于通过HttpRequestExecutingMessageHandler发出的每个请求 到目前为止,我已尝试按如下方式配置我的处理程序: SpelExpressionParser expressionParser = new SpelExpressionPar
HttpRequestExecutingMessageHandler
,它应该向端点URI发出HTTP GET请求,并且对于每个请求,它应该传递两个URL参数,其中的值是从流动消息的头中获得的。如何获取消息的头值,并将其应用于通过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);
SpelExpressionParser expressionParser=new SpelExpressionParser();
Map uriVariableExpressions=新HashMap(2);
uriVariableExpressions.put(“userId”,expressionParser.parseExpression(“headers.userId”);
uriVariableExpressions.put(“roleId”,expressionParser.parseExpression(“headers.roleId”);
HttpRequestExecutingMessageHandler=新的HttpRequestExecutingMessageHandler(uri);
setHttpMethod(HttpMethod.GET);
setUriVariableExpressions(uriVariableExpressions);
但是,当消息通过并发出HTTP请求时,消息的userId和roleId头值不会设置为请求URL中的参数。调试时,我可以看到消息的头和值肯定在流动的消息中。spel表达式正确吗
谢谢,
PM您的uri
必须有占位符来替换变量,例如:
http://foo.com/service?userId={userId}&roleId={roleId}
从另一边,当你发送消息时,请显示你的uri
和日志。你好,阿特姆,我在uri本身中没有占位符。一旦我添加了占位符作为uri的一部分,我就得到了一个新的错误:EL1008E:(位置8):在类型为的对象上找不到字段或属性“userId”。
。因此,我随后将spel表达式更改为以下形式:“headers['userId']”
和“headers['roleId']”
,而不是“headers.userId”
和“headers.roleId”
,现在包含了URI参数,请求发送正常。再次感谢!