带有url参数表达式的Spring Integration HttpRequestExecutingMessageHandler

时间:2014-08-15 14:43:11

标签: spring-integration spring-el

我有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

1 个答案:

答案 0 :(得分:1)

您的uri必须有占位符来替换您的变量,例如:

http://foo.com/service?userId={userId}&roleId={roleId}

从另一方面,当您发送消息时,请显示您的uri和日志。