Как мне установить контент-тип на верблюде-restlet запросу производитель?


Мне нужно использовать простой сервис Rest, но их реализация прерывается, если мой запрос выходит с Content-type: application / x-www-form-urlencoded. Мне нужно установить его как "application/json" или столкнуться со статусом 415.

Я использую компонент restlet producer, потому что он уже используется повсюду, и до сих пор он попал в золотую середину между функциональностью и простотой. Пока что.

В любом случае, попытка установить заголовок в моем маршруте, кажется, имеет нулевой эффект, и content-type моего запроса остается как application/x-www-form-urlencoded. Вот мой тестовый код:

    from("direct:getImg")
            .setHeader(RestletConstants.RESTLET_LOGIN, simple("admin"))
            .setHeader(RestletConstants.RESTLET_PASSWORD, simple("admin"))
            .setHeader(Exchange.CONTENT_TYPE, simple("application/json"))
            .to("restlet:http://requestb.in/12sowlx1?restletMethod=get&throwExceptionOnFailure=false")

Я, очевидно, что-то упускаю, но я не могу найти никакого примера. Может ли кто-нибудь указать правильный путь для этого?

Спасибо!

1 2

1 ответ:

Перед вызовом restlet следует вызвать процессор и задать тип содержимого в exchange. Что-то вроде этого:

from("direct:getImg").process(new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
            exchange.getIn().setHeader(Exchange.CONTENT_TYPE, MediaType.APPLICATION_XML);
        }
    }).to("restlet:http://requestb.in/12sowlx1?restletMethod=get&throwExceptionOnFailure=false");
Я проверил его, и он работает. Дайте мне знать результат.