接口開發中的 RestTemplate 傳參問題


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);
		```


免責聲明!

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



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