以前一開始用原生的http請求,那叫一個累,后來找到一個第三方的工具包,用起來是真的舒服,不過有一說一,第三方工具包依賴性真的強,除非和組長商量過,不然能少用,還是少用點,話說搞微服務的肯定少不了和HTTP或RPC打交道的,以前了解過Spring 的RestTemplate,但是一旦實踐就給忘光光了,不過經過幾次折騰,總算是搞明白了,get請求就不說了,主要是說一下post請求,上代碼:
1 RestTemplate restTemplate = new RestTemplate(); 2 HttpHeaders headers = new HttpHeaders(); 3 MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); 4 map.add("subFun", CommConfig.Otrs_SubFun_CTIDUTYPERSON); 5 map.add("paramEncoded", base(params)); 6 //以form-data形式發送請求 7 headers.setContentType(MediaType.MULTIPART_FORM_DATA); 8 HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers); 9 ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class); 10 //對資料結果的處理 11 return JSONObject.parseObject(response.getBody());
第一行是new一個物件
第二行是new一個頭部資訊
第三行是new一個map物件,注意要用LinkedMultiValueMap
第四、五行都是添加請求引數
第七行是設定請求方式,這里要特別注意,因為post有很多的發送方式,比如,json,form-data,xxx-form-data等,具體的點進去找就行了,里面也有注釋說得很清楚
第八行是組裝請求體
第九行是發送請求,注意String.class,如果你回傳的引數屬性確定,就可以用一個物體類來接收
第十一行是我把接收到的引數轉為了json格式
這樣一個最實用的post請求就出來了,由于我的代碼中多處用到了post請求,所以我就拆分成一個方法,為啥不是工具類,因為我覺得他還不夠靈活,上截圖:

1 /** 2 * 發送post請求 3 * @param map 請求引數 4 * @param url 請求地址 5 * @return 回應結果 6 */ 7 public JSONObject post(MultiValueMap<String, Object> map, String url) { 8 RestTemplate restTemplate = new RestTemplate(); 9 HttpHeaders headers = new HttpHeaders(); 10 //以form-data形式發送請求 11 headers.setContentType(MediaType.MULTIPART_FORM_DATA); 12 HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers); 13 ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class); 14 //對資料結果的處理 15 return JSONObject.parseObject(response.getBody()); 16 }
呼叫方式,組裝好一個map,然后直接呼叫post()方法就好了

1 //1、RestTemplate發送http post請求 2 MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); 3 map.add("subFun", CommConfig.Otrs_SubFun_CTISTATISTICSCALLRECORD); 4 map.add("paramEncoded", base(params)); 5 //2、拿到回傳的資料,轉換為JSONObject 6 JSONObject results = post(map, resUrl("base","otrsUrlBase")+resUrl("base","otrsUrlInf"));
之所以說不夠靈活,就是請求方式目前是固定的,沒有分解出來,最近專案比較趕,沒多少時間研究了,先這樣子吧,
好了,下課
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254326.html
標籤:其他
上一篇:封裝
