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  還不清楚。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM