결과적으로 얘기하면 Context-type 이 application/json 타입이 아니라서 오류가 나온다.
상기 오류와 같은 경우 대개 text/html 타입으로 response해주는 경우가 많다.
따라서 response 해주는 개발 담당자에게 json 타입으로 바꿔달라고 하던지, String 타입으로 받아서 파싱해서 처리하면 된다.
파싱하는 소스는 하기와 같다.
private final ObjectMapper objectMapper = new ObjectMapper();
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json"); // 맞는 타입에 따라
headers.add("Accept-Charset", "UTF-8"); //맞는 타입에 따라
headers.add("Authorization", "헤더인증키");
JSONObject obj= new JSONObject();
obj.put("AA", "AA DATA");
obj.put("BB", "BB DATA");
obj.put("CC", "CC DATA");
obj.put("DD", "DD DATA");
HttpEntity<String> request = new HttpEntity<String>(obj.toString(), headers);
String strObj = restTemplate.postForObject("URL", request, String.class);
JsonNode resNode = objectMapper.readTree(strObj);
String aa = responseJsonNode.get("AA").toString();
String bb = responseJsonNode.get("BB").toString();
String cc = responseJsonNode.get("CC").toString();
String dd = responseJsonNode.get("DD").toString();
텍스트로 넘겨주는 것을 처리하면 손도 많이가고 오류날 확률이 높아진다.
해당 개발담당자에게 JSON으로 바꿔달라고 하는 것이 빠르다.
댓글