post请求失败 服务器响应码,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();

MultiValueMapmap= 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";

Mapmap = 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";

Mapmap = new HashMap<>();

map.put("host","172.16.24.220");

map.put("user","root");

map.put("cmd",cmd);

// ParameterizedTypeReference 该类的目的是启用捕获和传递泛型

ParameterizedTypeReferencetypeRef = new ParameterizedTypeReference() {

};

JSONObject createDbJsonObject = JSONObject.fromObject(map);

HttpEntityentityPost = new HttpEntity(createDbJsonObject);

ResponseEntitycreateDbResponse = restTemplate.exchange(url, HttpMethod.POST, entityPost,typeRef);

HttpStatus statusCode = createDbResponse.getStatusCode();

LOGGER.info("TestRestTemplate testInstallCollectdByRemote createDbResponse = {}", createDbResponse);

LOGGER.info("TestRestTemplate testInstallCollectdByRemote statusCode = {}", statusCode);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值