2017-03-02 2 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 메서드를 사용하여 json ( )을 서버에 보내는 예제 Route (예 : 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의 버전).