2016-09-27 6 views
0

JMS 대기열에서 읽기 용으로 구성된 낙타 경로가 있고 서비스에 게시됩니다.Camel을 사용하여 POST 요청하기

from("jms:queue") 
.marshal() 
.json(JsonLibrary.GSON) 
.setHeader(Exchange.CONTENT_TYPE,constant("application/json")) 
.setHeader(Exchange.HTTP_METHOD, constant("POST")) 
.process(new Processor1()) 
.to("https4:xxxxxx?throwExceptionOnFailure=false") 
.process(new MyProcessor()) 

내 구성 : 내 경로입니다

HttpComponent httpc = getContext().getComponent("http4",HttpComponent.class); 
httpc.setHttpConfiguaration(customHttpConfig()) 

및 customHttpConfig에 난 내 인증 세부 사항을 설정합니다.

서버에서 400 오류가 발생합니다. 하지만 나는 Postman api에서 서버를 치고 성공적인 응답을 얻을 수 있습니다.

(요청하기 전에) 내 Processor1 클래스에서 내 개체의 json 표현이 포함 된 메시지 본문을 인쇄 할 수 있습니다.

그러나 POST 요청 후 프로세서에

, 내가이 일을하고있다 및 응답 아래 점점 : 내가 잘못

Message in = exchange.getIn(); 
in.getBody(String.class); // print the error code 400 
HttpServletRequest request = in.getBody(HttpServletRequest.class)// This is null. 

아무것도 뭐하는 거지? 내 게시물 요청 본문에 메시지 내용을 설정해야합니까?

+0

400 나쁜 요청을 의미한다. 따라서 요청 메시지 또는 URI가 잘못되었음을 의미합니다. 서버 로그에 귀하의 요청이 보내졌고 올바른 것으로 보입니까? 서버가받는 헤더는 어떻게됩니까? –

+0

서버 로그에 액세스 할 수 없습니다. 내가 언급했듯이, exchange.in에서 얻은 요청 객체는 null입니다. –

+0

400 요청이 잘못되었을 때 서버에서 응답을 받습니까? 가장 쉬운 방법은 자체 로컬 서버를 설치하고 먼저 테스트하는 것입니다. 이렇게하면 통합 테스트를 수행하기 전에 수신중인 헤더와 본문이 어떻게 보이는지 정확히 알 수 있습니다. 다음은 http://tinyserver.sourceforge.net/와 함께 놀 수있는 간단한 서버입니다 –

답변

0

String.class되지 않습니다 :

in.getBody(String.class); 

먼저 다음, 서버 응답의 유형을 확인 인쇄하거나 교환 본체를 기록하려고합니다.

그것은 HttpServletResponse 같아야

HttpServletRequest request = in.getBody(HttpServletRequest.class) 
+0

문자열 형식 일 수 있습니다. 이것을 확인하십시오. http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html. String으로 변환하여 응답을 인쇄 할 수 있습니다. –

+0

또한 두 번째 부분에 대해이 stackoverflow 질문 포인트 httprequest 개체를 사용하는 방법을 가리 킵니다 .. http://stackoverflow.com/questions/19976812/how-to-dump-http-body-and-headers-sent-with-http- component-with-apache-camel –

관련 문제