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参数,请求发送正常。再次感谢!