- 這是本項目的接口 稱為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 還不清楚。