zoukankan      html  css  js  c++  java
  • 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  还不清楚。

  • 相关阅读:
    java.lang.Math.pow方法
    【动态代理】增强代理方法、代理多种方法
    Exception in thread "main" java.net.ConnectException: Connection refused: connect
    serialVersionUID设置自动添加
    三个线程之间的通信
    LinkedList源码分析
    JavaScript学习
    Java学习大纲
    w3cschool-javascript教程-学习笔记
    FreeMarker学习总结
  • 原文地址:https://www.cnblogs.com/ssskkk/p/9210914.html
Copyright © 2011-2022 走看看