Как указать выражение-заголовок в обработчике потока данных Spring Cloud «http-запрос»?
Мы пытаемся передать заголовок базовой аутентификации при использовании предварительно созданного процессора SCDF « http-запрос » для вызова внешней службы. Насколько я понимаю, HTTP-заголовки сообщения не переносятся автоматически при вызове, вместо этого нам нужно заполнить свойство " headers-expression ". Ниже приведен шаг обработчика вызовов определения потока:
http-request --body-expression=payload
--url-expression='headers.reportURL' --http-method-expression='headers.httpMethod' --headers-expression='headers.Authorization'
Мы уже установили заголовок сообщения « Авторизация » как « Basic <base64encoded(« user:password »)> » на предыдущем шаге, поэтому « headers.Authorization » имеет правильное значение заголовка Basic Authentication, когда сообщение приходит на « http-запрос ». процессор. Однако это не работает, в журнале потока есть следующая ошибка:
org.springframework.expression.spel.SpelEvaluationException: EL1001E: проблема преобразования типа, невозможно преобразовать из java.lang.String в java.util.Map в org.springframework.expression.spel.support.StandardTypeConverter.convertValue (StandardTypeConverter. ) в org.springframework.expression.common.ExpressionUtils.convertTypedValue (ExpressionUtils.java:57)
Из сообщения об ошибке видно, что нам нужно передать карту? Что-то вроде « Авторизация: заголовки. Авторизация »? (При таком кодировании поток даже не был успешно развернут). Мы не хотим жестко кодировать " headers.Authorization " как буквальную строку Basic Auth base64. Также, как указать более одного заголовка (например, добавление « типа содержимого ») в « выражение заголовков »? Мы просмотрели документацию по SCDF и в Интернете, но, похоже, не нашли примера, как это сделать.
Спасибо.
1 ответ
Если вы говорите, что уже установили эти заголовки заранее, рассмотрите только это выражение следующим образом:
--headers-expression='headers'. The
заголовки
property of the
Сообщение
is a
Карта сама по себе.
Если это по-прежнему не соответствует вашим требованиям, подумайте об использовании
in-line map
синтаксис для SpEL: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-inline-maps