如何根据 camel-restlet 生产者请求设置 Content-Type?
How do I set the Content-Type on a camel-restlet producer request?
我需要使用简单的 Rest 服务,但如果我的请求以 Content-type: application/x-www-form-urlencoded 结束,它们的实现就会中断。我需要将其设置为 "application/json" 或面临状态 415。
我正在使用 restlet producer 组件,因为它已经被广泛使用,并且到目前为止它已经达到了功能性和简单性之间的最佳平衡点。至今。
无论如何,尝试在我的路线中设置 header 似乎没有效果,我请求的 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")
我显然遗漏了一些东西,但我找不到任何例子。任何人都可以指出正确的方法吗?
谢谢!
您应该在调用 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");
我已经测试过它并且有效。让我知道结果。
我需要使用简单的 Rest 服务,但如果我的请求以 Content-type: application/x-www-form-urlencoded 结束,它们的实现就会中断。我需要将其设置为 "application/json" 或面临状态 415。
我正在使用 restlet producer 组件,因为它已经被广泛使用,并且到目前为止它已经达到了功能性和简单性之间的最佳平衡点。至今。
无论如何,尝试在我的路线中设置 header 似乎没有效果,我请求的 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")
我显然遗漏了一些东西,但我找不到任何例子。任何人都可以指出正确的方法吗?
谢谢!
您应该在调用 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");
我已经测试过它并且有效。让我知道结果。