码迷,mamicode.com
首页 > Web开发 > 详细

RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type

时间:2018-06-23 00:04:49      阅读:1700      评论:0      收藏:0      [点我收藏+]

标签:serve   str   get   ted   The   tco   invoke   color   support   

  • 这是本项目的接口 称为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

标签:serve   str   get   ted   The   tco   invoke   color   support   

原文地址:https://www.cnblogs.com/ssskkk/p/9210914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!