Как мне установить контент-тип на верблюде-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 ответ:
Перед вызовом 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");