SpringBoot-Http請求工具類
一、編寫請求配置類
import com.alibaba.fastjson.JSONObject; import org.springframework.context.annotation.Configuration; import org.springframework.http.*; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import java.io.IOException; import java.net.URI; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Map; import java.util.Objects; @Configuration public class RestUtils { private static final RestTemplate restTemplate = new RestTemplate(); public static JSONObject get(String url, Map<String,String> urlParams){ return get(urlToUri(url,urlParams)); } //在處理企業(yè)微信某些參數(shù)時有問題 public static JSONObject get(String url){ return get(URI.create(url)); } private static JSONObject get(URI uri){ ResponseEntity<JSONObject> responseEntity =restTemplate.getForEntity(uri, JSONObject.class); serverIsRight(responseEntity); //判斷服務(wù)器返回狀態(tài)碼 return responseEntity.getBody(); } public static JSONObject post(String url, Map<String,String> urlParams, JSONObject json){ //組裝url return post(urlToUri(url,urlParams),json); } public static JSONObject post(String url, JSONObject json){ //組裝urL return post(URI.create(url),json); } private static JSONObject post(URI uri, JSONObject json){ //組裝url //設(shè)置提交json格式數(shù)據(jù) HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<JSONObject> request = new HttpEntity(json, headers); ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(uri,request, JSONObject.class); serverIsRight(responseEntity); //判斷服務(wù)器返回狀態(tài)碼 return responseEntity.getBody(); } private static URI urlToUri(String url,Map<String,String> urlParams){ //設(shè)置提交json格式數(shù)據(jù) UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(url); for(Map.Entry<String,String> entry : urlParams.entrySet()) { uriBuilder.queryParam((String)entry.getKey(), (String) entry.getValue()) ; } return uriBuilder.build(true).toUri(); } public static JSONObject upload(String url, MultiValueMap formParams){ //設(shè)置表單提交 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(formParams, headers); ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url,request, JSONObject.class); serverIsRight(responseEntity); //判斷服務(wù)器返回狀態(tài)碼 return responseEntity.getBody(); } public static String download(String url,String targetPath) throws IOException { ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class); if(rsp.getStatusCode() != HttpStatus.OK){ System.out.println("文件下載請求結(jié)果狀態(tài)碼:" + rsp.getStatusCode()); } // 將下載下來的文件內(nèi)容保存到本地 Files.write(Paths.get(targetPath), Objects.requireNonNull(rsp.getBody())); return targetPath; } public static byte[] dowload(String url){ ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class); return rsp.getBody(); } private static void serverIsRight(ResponseEntity responseEntity){ if(responseEntity.getStatusCodeValue()==200){ }else { System.out.println("服務(wù)器請求異常:{}"+responseEntity.getStatusCodeValue()); } } }
二、調(diào)用測試
/** * 企業(yè)微信-讀取成員 * @param userId * @return */ public WxDeptUserResult getQyWxUser(String userId) { WxDeptUserResult wxDeptResult = new WxDeptUserResult(); getAccesstoken(); try { //替換掉accessToken String userIdUrl = USER_DEPT_USER_URL + ACCESSTOKEN + "&userid=" + userId; //發(fā)送get請求 JSONObject jsonObject = RestUtils.get(userIdUrl); log.info("請求企業(yè)微信 {}, 讀取成員信息 {}", userIdUrl, jsonObject); if(jsonObject.get("errcode").equals(0)){ wxDeptResult.setUserid(jsonObject.getString("userid")); wxDeptResult.setName(jsonObject.getString("name")); wxDeptResult.setDepartment(((List)jsonObject.get("department")).get(0).toString()); } } catch (Exception e) { log.error("調(diào)用企業(yè)微信你接口-讀取成員信息失敗"+e.getMessage()); throw new BusinessException(ResultStatus.DEPT_USERINFO_ERROR.message()); } return wxDeptResult; }
具體數(shù)據(jù)如下圖所示:

古今成大事者,不唯有超世之才,必有堅韌不拔之志!

浙公網(wǎng)安備 33010602011771號