RestTemplate發送添加Header和Body

使用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,注意區別,使用不當,服務端是接收不到參數的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章