RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type
Posted ssskkk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type相关的知识,希望对你有一定的参考价值。
- 这是本项目的接口 称为client
@POST @Path("/{urlcode}") @Consumes(MediaTypes.JSON_UTF_8) @Produces(MediaTypes.JSON_UTF_8) public String invokePostMethod(String postData);
- 这是远程被调用的接口 称为server
@POST @Path("/{urlcode}") @Consumes(MediaTypes.JSON_UTF_8) @Produces(MediaTypes.JSON_UTF_8)
public APIResult<ProdAttrVO> getAttr(String postData);
MediaTypes都是JSON_UTF_8
- 这是调用的代码
restTemplate.postForObject(weburl, postData, String.class);
client端500报错 server error。
Server端HTTP 415 Unsupported Media Type
- 检查发现 Servler端接收到的Content-type:text/plain 而@Consumes(MediaTypes.JSON_UTF_8) 只能接收application/json的content-type 所以报错415
解决办法 client端rest调用的时候 重新指定Content-type
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> requestEntity = new HttpEntity<String>(postData, requestHeaders);
String result =restTemplate.postForObject(weburl, requestEntity, String.class);
return result;
问题解决
至于 为什么client端接口上面标注了@Consumes(MediaTypes.JSON_UTF_8) 到Server接收的时候变成了Content-type:text/plain 还不清楚。
以上是关于RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type的主要内容,如果未能解决你的问题,请参考以下文章
Java RestTemplate post请求传递参数遇到的坑
Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)