2014-08-15 1 views
0

HttpRequestExecutingMessageHandler은 엔드 포인트 URI에 HTTP GET 요청을해야하며 각 요청에 대해 흐르는 메시지의 헤더에서 가져온 값과 함께 두 개의 URL 매개 변수를 전달해야합니다. Message의 헤더 값을 가져와 HttpRequestExecutingMessageHandler을 통해 이루어진 각 요청에 어떻게 적용 할 수 있습니까? 지금까지 다음과 같이 내 핸들러를 구성 시도스프링 통합 HttpRequestExecutingMessageHandler (URL 매개 변수 표현식 포함)

: 메시지를 통과하고, HTTP 요청이 때,

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); 

을하지만은 Message의 ID 및 역할 ID 헤더 값을 매개 변수로 설정되지 않은 요청의 URL에 디버깅 할 때 메시지의 헤더와 값이 흐르는 메시지에 분명히 있음을 알 수 있습니다. 맞춤법 표현이 맞습니까? 당신이를 보낼 때, 다른 측면, 쇼, 제발, 당신의 uri 및 로그에서

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

:

감사합니다, 오후

답변

1

당신의 uri 예를 들어, 귀하의 변수를 대체 할 자리를 가지고있다 메시지.

+0

안녕하세요 Artem, URI 자체에 자리 표시자가 없습니다. uri의 일부로 placeholder를 추가하고 나면 새로운 오류가 생겼습니다. 'EL1008E : (pos 8) :'userId '필드 또는 속성이 type ... 객체에 없습니다.'. 그래서 spel 표현식을''headers.userId ''및''headers.roleId "'대신에 headers ['userId ']' '와''roleId']"'형식으로 변경했습니다 : , 이제 URI 매개 변수가 포함되고 요청이 제대로 전송됩니다. 다시 한 번 감사드립니다! –