如何在Camel DELETE方法中发送内容类型。我添加了以下方式,但它无法正常工作。
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, simple("DELETE"))
.setHeader(Exchange.CONTENT_TYPE, simple("application/xml"))
.setHeader(Exchange.HTTP_URI, simple("http://02.02.02.02:8080/rest/delete/student/688187"))
.to("http://emptyhost");
您能帮我解决一下这个问题吗?
答案 0 :(得分:1)
在删除操作中,不会发送任何内容,因此不需要Exchange.CONTENT_TYPE
属性。
请尝试
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, simple("DELETE"))
.to("http://02.02.02.02:8080/rest/delete/student/688187");
或
from("direct:start")
.to("restlet:http://02.02.02.02:8080/rest/delete/student/688187?restletMethod=delete");
顺便说一下,在URL中使用delete
不是RESTful方式,应该是ommited。
修改强>
Camel不会将正文转移到DELETE
操作的请求,可以看到挖掘源代码。请改用PUT
操作。
查看我对您的其他SO的回答。
答案 1 :(得分:0)
正如此post所提到的,如果在HTTP方法中删除了请求方法,骆驼可以处理正文。
http4组件中的骆驼版本2.19.0,带有deleteWithBody选项。我们可以将其添加到URL并将http方法用作DELETE
答案 2 :(得分:0)
默认情况下,Apache骆驼通过带有查询参数“ deleteWithBody”的生产者模板支持内容类型/正文内容。
String endpoint = https://testuri.com/resource;
endpoint = https://testuri.com/resource?deleteWithBody=true;
Exchange exchange;
exchange.getIn.setBody("test");
exchange.getIn.setHeader("Content-Type","application/json");
ProducerTemplate template = exchange.set(endpoint, exchange);