RestTemplate post 요청 상태 코드 415

배경:
크로스 모듈은post를 통해 지정된 인터페이스를 호출하여 415로 되돌려줍니다.
415 상태 코드 설명:
 Unsupported Media Type
현재 요청한 방법과 요청한 자원에 대해 요청에 제출한 실체는 서버에서 지원하는 형식이 아니기 때문에 요청이 거절됨
오류 로그:
org.springframework.web.client.HttpClientErrorException: 415 null atorg.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:86) at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:708)
기능 오류 코드와 정상 코드 비교
예외 요청 415:
RestTemplate restTemplate = new RestTemplate();
String url = "http://172.16.17.82/portal/zcm-cmdb/remote/exec";
 String cmd = "mkdir -p /tmp/lushuan/test5";
// 1、  415
 HttpHeaders headers = new HttpHeaders();
 MultiValueMap map= new LinkedMultiValueMap();
 map.add("host", "172.16.24.220");
 map.add("user", "root");
 map.add("cmd", cmd);
HttpEntity> request = new HttpEntity>(map, headers);
Object data = restTemplate.postForObject(url,request,Object.class);
LOGGER.info("TestRestTemplate testInstallCollectdByRemote data = {}", data);

일반 코드 데모 1:
 RestTemplate restTemplate = new RestTemplate();
String url = "http://172.16.17.82/portal/zcm-cmdb/remote/exec";
String cmd = "mkdir -p /tmp/lushuan/test6";
Map map = new HashMap<>();
map.put("host","172.16.24.220");
map.put("user","root");
map.put("cmd",cmd);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity> request = new HttpEntity<>(map, headers);
JSONObject data = restTemplate.postForObject(url,request, JSONObject.class);
LOGGER.info("TestRestTemplate testInstallCollectdByRemote data = {}", data);

일반 코드 데모 2:
RestTemplate restTemplate = new RestTemplate();
String url = "http://172.16.17.82/portal/zcm-cmdb/remote/exec";
String cmd = "mkdir -p /tmp/lushuan/test7";
Map map = new HashMap<>();
map.put("host","172.16.24.220");
map.put("user","root");
map.put("cmd",cmd);
// ParameterizedTypeReference  
ParameterizedTypeReference typeRef = new ParameterizedTypeReference() {
};
JSONObject createDbJsonObject = JSONObject.fromObject(map);
HttpEntity entityPost = new HttpEntity(createDbJsonObject);
ResponseEntity createDbResponse = restTemplate.exchange(url, HttpMethod.POST, entityPost,typeRef);
HttpStatus statusCode = createDbResponse.getStatusCode();
LOGGER.info("TestRestTemplate testInstallCollectdByRemote createDbResponse = {}", createDbResponse);
LOGGER.info("TestRestTemplate testInstallCollectdByRemote statusCode = {}", statusCode);

두 단락 코드의 실현 방식은 모두 가능하다. 두 번째는 되돌아오는 상태 코드, 크로스 필드 여부 등 정보를 얻을 수 있는 것을 추천한다.

좋은 웹페이지 즐겨찾기