2014-06-06 4 views
0

Springframework의 RestTemplate으로 나머지 클라이언트를 만들려고하는데 문제는 내 API가 Camunda Rest Api라는 것입니다.봄 휴식 클라이언트 + camunda 나머지 API : postForObject는 camunda.bpm 만 허용합니다. JSONObject하지만 JacksonMessageConverter는 javax JsonObject 만 사용합니다.

즉, postForObject을 통해 Camunda.bpm의 JSONObject 유형을 보낼 수 있지만 JacksonJsonConverter은 javax의 JsonObject만을 구문 분석합니다. 내가 JSONObject 종류와 각각 JsonObject 유형을 사용할 때

나는 어느

no message converter found for the request type camunda JSONObject

또는

bad media type 예외를 받고 있어요.

봄에 새롭다 며칠 동안 붙어있어, 누구든지 도울 수 있습니까?

답변

0

MappingJackson2HttpMessageConverter가 실제로 작동하고 Camunda REST API의 요청 콘텐츠 형식을 면밀히 살펴본 후 Jackson.dll에서 ArrayList 시작 토큰으로 시작하지 않는 모든 것을 구문 분석 할 수 없다는 것을 발견했습니다. " [ ". Camunda가 요청한대로 시작 토큰 "{"로 요청을 전달해야하므로 필자는 자신의 Jackson 변환기를 작성했습니다. 특히, 나는 Jackson2에 readJavaType() 메소드를 오버라이드 (override) :

개인 개체 readJavaType (만약 javaType 만약 javaType, HttpInputMessage INPUTMESSAGE) { 시도 {

 String parseInput = "["+convertStreamToString(inputMessage.getBody())+"]"; 
     InputStream stream = new ByteArrayInputStream(parseInput.getBytes(StandardCharsets.UTF_8)); 
     return this.objectMapper.readValue(stream, javaType); 
    } 
    catch (IOException ex) { 
     throw new HttpMessageNotReadableException("Could not read JSON: " + ex.getMessage(), ex); 
    } 
}