RestTemplate
在使用 RestTemplate
時,通過map傳參,遇到傳不了參的問題
- 對於get請求,必須在請求的url中添加
?a={a}
,參數為對應的map的key
RestTemplate restTemplate = new RestTemplate();
String url = "https://restapi.amap.com/v3/weather/weatherInfo?key={key}&city={city}";
Map map = new HashMap();
map.put("key","4d6ab733dcfed0e82806b9a97ff602ff");
map.put("city","330100");
JSONObject forObject = restTemplate.getForObject(url, JSONObject.class, map);
- 對於post請求
1、調用postForObject方法 2、使用postForEntity方法 3、調用exchange方法
postForObject和postForEntity方法的區別主要在於可以在postForEntity方法中設置header的屬性,當需要指定header的屬性值的時候,使用postForEntity方法。exchange方法和postForEntity類似,但是更靈活,exchange還可以調用get、put、delete請求。使用這三種方法調用post請求傳遞參數,Map不能定義為以下兩種類型(url使用占位符進行參數傳遞時除外)
Map<String, Object> paramMap = new HashMap<String, Object>();
Map<String, Object> paramMap = new LinkedHashMap<String, Object>();
使用MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
可以實現傳參
RestTemplate restTemplate = new RestTemplate();
// 封裝參數,千萬不要替換為Map與HashMap,否則參數無法傳遞
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("token",token);
String s5 = restTemplate.postForObject(url, paramMap, String.class);
```