使用RestTempalate發送HTTP請求時,會有發送自定義Header和Body的需求,有一點錯誤就發送不出去,這裏直接給出答案:
String token = easeToken.getAccess_token();
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + token);
headers.add("Content-Type", "application/json");
Map<String, Object> requestBody = new HashMap<>(8);
requestBody.put("groupname", createChatGroupReqDto.getGroupname());
requestBody.put("desc", createChatGroupReqDto.getDesc());
requestBody.put("public", createChatGroupReqDto.getPublic2());
requestBody.put("maxusers", createChatGroupReqDto.getMaxusers());
requestBody.put("approval", createChatGroupReqDto.getApproval());
requestBody.put("owner", createChatGroupReqDto.getOwner());
requestBody.put("members", createChatGroupReqDto.getMembers());
log.info("createChatGroup|{}", requestBody);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> response = null;
try {
response = restTemplate.postForEntity(CREATE_GROUP_URL, httpEntity, String.class);
} catch (HttpClientErrorException e) {
log.error(e.getResponseBodyAsString(), e);
}
注意這裏使用的是HashMap,當你沒有添加Header的時候,如:
MultiValueMap<String, String> paramMap = new LinkedMultiValueMap<>();
String response= restTemplate.postForObject(url, paramMap, String.class);
這裏的Map使用的是MultiValueMap,注意區別,使用不當,服務端是接收不到參數的。