2017-03-02 147 views
1

我能够使用Apache Camel发送GET请求到REST服务,现在我试图使用Apache Camel发送带有JSON正文的POST请求。我无法弄清楚如何添加JSON主体并发送请求。我如何添加JSON主体,发送请求并获取响应代码?使用Apache Camel发送POST请求

回答

0

这是你如何做到这一点:

from("direct:start") 
.setHeader(Exchange.HTTP_METHOD, constant("POST")) 
.to("http://www.google.com"); 

目前骆驼交易所的身体会得到张贴到URL终点。

1

下面你可以找到一个路由示例,它使用POST方法向服务器发送(每2秒钟)json, ,例如它是localhost:8080/greeting。还有一种方式来获得的响应呈现:

from("timer://test?period=2000") 
    .process(exchange -> exchange.getIn().setBody("{\"title\": \"The title\", \"content\": \"The content\"}")) 
    .setHeader(Exchange.HTTP_METHOD, constant("POST")) 
    .setHeader(Exchange.CONTENT_TYPE, constant("application/json")) 
    .to("http://localhost:8080/greeting") 
    .process(exchange -> log.info("The response code is: {}", exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE))); 

通常它是不是手工编写JSON是一个好主意。您可以使用例如

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-gson</artifactId> 
</dependency> 

为您执行编组。假设你有一个问候语类中定义的,可以通过删除所述第一处理器和使用下面的代码,而不是修改路线:

.process(exchange -> exchange.getIn().setBody(new Greeting("The title2", "The content2"))) 
.marshal().json(JsonLibrary.Gson) 

进一步阅读:http://camel.apache.org/http.html 值得一提的是,也有http4组分(它们使用不同的引擎盖下的Apache HttpClient版本)。