如何在骆驼restlet生产者请求上设置内容类型?

Rod*_*ade 5 java restlet apache-camel

我需要使用简单的 Rest 服务,但是如果我的请求以 Content-type: application/x-www-form-urlencoded 发出,它们的实现就会中断。我需要将其设置为“application/json”或面临状态 415。

我正在使用 restlet 生产者组件,因为它已经在整个过程中使用了,并且到目前为止它已经达到了功能性和简单性之间的最佳位置。迄今为止。

无论如何,尝试在我的路由中设置标头似乎零效果,我的请求的内容类型仍然为 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")
Run Code Online (Sandbox Code Playgroud)

我显然错过了一些东西,但我找不到任何例子。任何人都可以指出正确的方法吗?

谢谢!

小智 4

您应该在调用 Restlet 并在交换中设置内容类型之前调用处理器。像这样的东西:

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");
Run Code Online (Sandbox Code Playgroud)

我已经测试过它并且有效。让我知道结果。