Content-Type в методе GET не заполняется

Установка Content-Type для метода GET не заполняется с помощью компонента Apache Camel-Http.

exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");

Тогда как то же самое работает при использовании метода POST.

Понял, что для метода GET нет тела. Странно то, что если для body задана пустая строка (""), передается Content-Type, но тип метода также изменяется на POST.

exchange.getIn().setBody("");

2.13.1 - это версия Camel, которую я сейчас использую. Пробовал с последними версиями тоже, все так же. Есть что-то, чего мне не хватает.

Сервис обязывает передать Content-Type.

1 ответ

В источнике Camel есть тест для такого сценария: https://github.com/apache/camel/blob/master/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java

В обоих тестовых случаях тело должно быть настроено. Вы должны увидеть это в camel-http4:

https://github.com/apache/camel/blob/master/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java#L482-L582

и верблюд-http тоже:

https://github.com/apache/camel/blob/master/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java#L447-L506

Если вы решите использовать компонент Http4/http, вам нужно будет указать тело.

Существует также очень старая дискуссия о Набле: http://camel.465427.n5.nabble.com/Http4-Set-Header-Content-Type-not-passing-through-to-the-HTTP-Request-td5746414.html

Другие вопросы по тегам