2025年RestTemplate post请求返回状态码415「建议收藏」

RestTemplate post请求返回状态码415「建议收藏」背景 跨模块通过 post 请求调用指定接口 返回 415 415 状态码解释 Unsupported Media Type 对于当前请求的方法和所请求的资源 请求中提交的实体并不是服务器中所支持的格式 因此请求被拒绝 错误日志 org springframew web client HttpClientEr 415 null atorg

背景:

跨模块通过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);

两段代码的实现方式都可以,推荐第二种,可以获取返回的状态码,是否跨域等信息。

编程小号
上一篇 2025-02-22 19:30
下一篇 2025-02-21 22:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/139506.html