Я настраиваю outbound-gateway
в моем context.xml, где я хочу извлечь значения из полезной нагрузки типа byte[]
и использовать их для создания URI
.Я обнаружил, что SpEL позволяет построить его следующим образом:
url-expression="T(org.springframework.web.util.UriComponentsBuilder)
.fromHttpUrl('http://HOST:PORT/PATH')
.queryParams(payload)
.build()
.toUri()"
Источник: https://docs.spring.io/spring-integration/reference/html/http.html#mapping-uri-variables
Мой вариант решения выглядит следующим образом:
<int-http:outbound-gateway id="candleRequestGateway"
request-channel="candleRequestChannel"
reply-channel="dataResponseChannel"
http-method="GET"
url-expression="T(org.springframework.web.util.UriComponentsBuilder)
.fromHttpUrl('some/{path}')
.queryParam('myParam', payload.get('myParam'))
.buildAndExpand(payload.get('path'))
.toUri()"/>
Тем не менее, я получаю следующую ошибку при выполнении payload.get('myParam')
part:
org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler#3]; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method get(java.lang.String) cannot be found on type byte[]
Я понимаю и согласен с ошибкой.Мой вопрос: есть ли способ (конкретное выражение SpEL (?)) Извлечь значения из полезной нагрузки byte[]
, не преобразовывая ее до того, как она достигнет outbound-gateway
?Это правильное решение вообще?