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