使用RestTemplate發送get請求時,如果有多個參數拼接起來會比較麻煩,在此做個簡單的封裝
public static void main(String[] args) { Map<String, Object> paramMap = new HashMap<>(16); paramMap.put("userId", "8a0bb0a698c142420198c15a7e5b0001"); paramMap.put("pageNum", "1"); paramMap.put("pageSize", "3"); paramMap.put("createStartTime", "2029-08-09"); paramMap.put("createEndTime", null); //獲取積分明細 ObjectDataResponse objectDataResponse = getForObject("http://10.200.40.157:8180/manage/scoreDetail", paramMap); System.out.println(objectDataResponse); } /** * 封裝的get請求,暫時只支持map傳參,並且value只支持基本類型和String * * @param url * @param object * @return */ private static ObjectDataResponse getForObject(String url, Object object) { StringBuffer stringBuffer = new StringBuffer(url); if (object instanceof Map) { Iterator iterator = ((Map) object).entrySet().iterator(); if (iterator.hasNext()) { stringBuffer.append("?"); Object element; while (iterator.hasNext()) { element = iterator.next(); Map.Entry<String, Object> entry = (Map.Entry) element; //過濾value為null,value為null時進行拼接字符串會變成 "null"字符串 if (entry.getValue() != null) { stringBuffer.append(element).append("&"); } url = stringBuffer.substring(0, stringBuffer.length() - 1); } } } else { throw new RuntimeException("url請求:" + url + "請求參數有誤不是map類型"); } log.info("url請求:" + url); return new RestTemplate().getForObject(url, ObjectDataResponse.class); }
請求結果
16:31:08.803 [main] INFO com.smf.interfaces.ManagementController - url請求:http://10.200.40.157:8180/manage/scoreDetail?createStartTime=2029-08-09&pageSize=10&userId=8a0bb0a698c142420198c15a7e5b0001&pageNum=1 16:31:09.208 [main] DEBUG org.springframework.web.client.RestTemplate - Created GET request for "http://10.200.40.157:8180/manage/scoreDetail?createStartTime=2029-08-09&pageSize=10&userId=8a0bb0a698c142420198c15a7e5b0001&pageNum=1" 16:31:09.271 [main] DEBUG org.springframework.web.client.RestTemplate - Setting request Accept header to [application/json, application/*+json] 16:31:09.834 [main] DEBUG org.springframework.web.client.RestTemplate - GET request for "http://10.200.40.157:8180/manage/scoreDetail?createStartTime=2029-08-09&pageSize=10&userId=8a0bb0a698c142420198c15a7e5b0001&pageNum=1" resulted in 200 (null) 16:31:09.835 [main] DEBUG org.springframework.web.client.RestTemplate - Reading [class com.smf.model.response.ObjectDataResponse] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@1dde4cb2] ObjectDataResponse(super=RestfulResponse(super=com.smf.model.response.ObjectDataResponse@76b92ca8, code=20000, msg=成功), data={pageNum=1, pageSize=10, total=3, totalPage=1, rows=[{createTime=2037.12.06 02:55:38, num=1, name=活動發放積分, updateTime=null, scoreValue=+500, ROW_ID=1}, {createTime=2037.12.06 02:55:38, num=2, name=活動發放積分, updateTime=null, scoreValue=+500, ROW_ID=2}, {createTime=2037.12.06 02:55:38, num=3, name=活動發放積分, updateTime=null, scoreValue=+500, ROW_ID=3}]})
