package com.basic.analy.utils;
|
|
import com.alibaba.fastjson.JSONObject;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpMethod;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.client.SimpleClientHttpRequestFactory;
|
import org.springframework.http.converter.FormHttpMessageConverter;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
import org.springframework.web.client.RestClientException;
|
import org.springframework.web.client.RestTemplate;
|
|
import javax.annotation.PostConstruct;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Set;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
//
|
///**
|
// * @author pl
|
// */
|
//@Component
|
//public class RestTemplateUtil {
|
//
|
// private static final Pattern QUERY_PARAM_PATTREN = Pattern.compile("([^&=]+)(=?)([^&]+)?");
|
//
|
// @Autowired
|
// private RestTemplate restTemplate;
|
//
|
// private static RestTemplateUtil restTemplateUtil;
|
//
|
//
|
// @PostConstruct
|
// public void init() {
|
// restTemplateUtil = this;
|
// restTemplateUtil.restTemplate = this.restTemplate;
|
// }
|
// public static void main(String[] args){
|
// JSONObject paramMap = new JSONObject();
|
// paramMap.put("clusterIds","f697c279-d0bc-44de-9a00-26a132c8247e");
|
// String post = restTemplateUtil.post("http://192.168.1.182:3696/data/api-d/cluster/findClusterNodesByClusterIds", paramMap , MediaType.APPLICATION_JSON_UTF8, false);
|
// System.out.println(post);
|
// }
|
//
|
// /**
|
// * httpclient POST调用,可以携带token,[-封装的postForEntity接口-]
|
// * @param url 请求地址
|
// * @param paramMap 请求参数,必须是MultiValueMap类型
|
// * @param responseType 返回类型
|
// * @param isNeedToken 请求header是否需要携带token
|
// * @return T
|
// * @throws RestClientException
|
// */
|
// public static <T> T postHeaderForEntity(String url, MultiValueMap<String, String> paramMap, Class<T> responseType, boolean isNeedToken)
|
// throws RestClientException {
|
// HttpHeaders headers = new HttpHeaders();
|
// headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
// if(isNeedToken) {
|
// headers.add("Authorization", "Bearer " + RequestUtil.getTokenByParam());
|
// }
|
// HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(paramMap, headers);
|
// return restTemplateUtil.restTemplate.postForEntity(url, request, responseType).getBody();
|
// }
|
//
|
//
|
// public static <T> T getHeaderForEntity(String url, MultiValueMap<String, Object> paramMap, Class<T> responseType, boolean isNeedToken)
|
// throws RestClientException {
|
// HttpHeaders headers = new HttpHeaders();
|
// headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
// if(isNeedToken) {
|
// headers.add("Authorization", "Bearer " + RequestUtil.getTokenByParam());
|
// }
|
// HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<MultiValueMap<String, Object>>(paramMap, headers);
|
// return restTemplateUtil.restTemplate.exchange(url, HttpMethod.GET, request, responseType).getBody();
|
//
|
// }
|
//
|
//
|
// /**
|
// * @param url
|
// * @param params
|
// * @return
|
// * @Title: get
|
// * @author: lp
|
// * @Description: TODO
|
// * @return: String
|
// */
|
// public static String get(String url, JSONObject params,boolean isNeedToken) {
|
// if(isNeedToken){
|
// params.put("access_token", RequestUtil.getTokenByParam());
|
// }
|
// String response = restTemplateUtil.restTemplate.getForObject(expandURL(url, params.keySet()), String.class, params);
|
// return response;
|
// }
|
//
|
// /**
|
// * @param url
|
// * @param params
|
// * @param mediaType
|
// * @param isNeedToken
|
// * @return
|
// * @Title: post
|
// * @author: lp
|
// * @Description: 将参数都拼接在url之后
|
// * @return: String
|
// */
|
// public static String post(String url, JSONObject params, MediaType mediaType, boolean isNeedToken) {
|
// // 拿到header信息
|
// HttpHeaders requestHeaders = new HttpHeaders();
|
// requestHeaders.setContentType(mediaType);
|
// if(isNeedToken) {
|
// requestHeaders.add("Authorization", "Bearer " + RequestUtil.getTokenByParam());
|
// }
|
// HttpEntity<JSONObject> requestEntity = (mediaType == MediaType.APPLICATION_JSON
|
// || mediaType == MediaType.APPLICATION_JSON_UTF8) ? new HttpEntity<JSONObject>(params, requestHeaders)
|
// : new HttpEntity<JSONObject>(null, requestHeaders);
|
// String result = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8)
|
// ? restTemplateUtil.restTemplate.postForObject(url, requestEntity, String.class)
|
// : restTemplateUtil.restTemplate.postForObject(expandURL(url, params.keySet()), requestEntity, String.class, params);
|
// return result;
|
// }
|
//
|
//
|
//
|
// /**
|
// * @param url
|
// * @param params
|
// * @param mediaType
|
// * @param isNeedToken
|
// * @return
|
// * @Title: post
|
// * @author: lp
|
// * @Description: 将参数都拼接在url之后
|
// * @return: String
|
// */
|
// public static <T> T postImg(String url, JSONObject params, MediaType mediaType, Class<T> clz, boolean isNeedToken) {
|
//
|
//
|
// //复杂构造函数的使用
|
// SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
|
// requestFactory.setConnectTimeout(30000);// 设置超时
|
// requestFactory.setReadTimeout(30000);
|
//
|
// //利用复杂构造器可以实现超时设置,内部实际实现为 HttpClient
|
// RestTemplate restTemplate = new RestTemplate(requestFactory);
|
//
|
// restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
|
//
|
//
|
// // 设置header信息
|
// HttpHeaders requestHeaders = new HttpHeaders();
|
// requestHeaders.setContentType(mediaType);
|
// if(isNeedToken) {
|
// requestHeaders.add("Authorization", "Bearer " + RequestUtil.getTokenByParam());
|
// }
|
// HttpEntity<?> requestEntity = (
|
// mediaType == MediaType.APPLICATION_JSON
|
// || mediaType == MediaType.APPLICATION_JSON_UTF8)
|
// ? new HttpEntity<JSONObject>(params, requestHeaders)
|
// : (mediaType == MediaType.APPLICATION_FORM_URLENCODED
|
// ? new HttpEntity<MultiValueMap>(createMultiValueMap(params), requestHeaders)
|
// : new HttpEntity<>(null, requestHeaders));
|
//
|
// T result = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8)
|
// ? restTemplate.postForObject(url, requestEntity, clz) // restTemplateUtil.
|
// : restTemplate.postForObject(mediaType == MediaType.APPLICATION_FORM_URLENCODED // restTemplateUtil.
|
// ? url
|
// : expandURL(url, params.keySet()), requestEntity, clz, params);
|
//
|
// return result;
|
// }
|
//
|
// /**
|
// * @param url
|
// * @param params
|
// * @param mediaType
|
// * @param clz
|
// * @return
|
// * @Title: post
|
// * @author: lp
|
// * @Description: 发送json或者form格式数据
|
// * @return: String
|
// */
|
// public static <T> T post(String url, JSONObject params, MediaType mediaType, Class<T> clz, boolean isNeedToken) {
|
// //这是为 MediaType.APPLICATION_FORM_URLENCODED 格式HttpEntity 数据 添加转换器
|
// //还有就是,如果是APPLICATION_FORM_URLENCODED方式发送post请求,
|
// //也可以直接HttpHeaders requestHeaders = new HttpHeaders(createMultiValueMap(params),true),就不用增加转换器了
|
// restTemplateUtil.restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
|
// // 设置header信息
|
// HttpHeaders requestHeaders = new HttpHeaders();
|
// requestHeaders.setContentType(mediaType);
|
// if(isNeedToken) {
|
// requestHeaders.add("Authorization", "Bearer " + RequestUtil.getTokenByParam());
|
// }
|
// HttpEntity<?> requestEntity = (
|
// mediaType == MediaType.APPLICATION_JSON
|
// || mediaType == MediaType.APPLICATION_JSON_UTF8)
|
// ? new HttpEntity<JSONObject>(params, requestHeaders)
|
// : (mediaType == MediaType.APPLICATION_FORM_URLENCODED
|
// ? new HttpEntity<MultiValueMap>(createMultiValueMap(params), requestHeaders)
|
// : new HttpEntity<>(null, requestHeaders));
|
//
|
// T result = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8)
|
// ? restTemplateUtil.restTemplate.postForObject(url, requestEntity, clz)
|
// : restTemplateUtil.restTemplate.postForObject(mediaType == MediaType.APPLICATION_FORM_URLENCODED
|
// ? url
|
// : expandURL(url, params.keySet()), requestEntity, clz, params);
|
//
|
// return result;
|
// }
|
//
|
//
|
// private static MultiValueMap<String, String> createMultiValueMap(JSONObject params) {
|
// MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
|
// for(String key : params.keySet()) {
|
// if(params.get(key) instanceof List) {
|
// for(Iterator<String> it = ((List<String>) params.get(key)).iterator(); it.hasNext(); ) {
|
// String value = it.next();
|
// map.add(key, value);
|
// }
|
// } else {
|
// map.add(key, params.getString(key));
|
// }
|
// }
|
// return map;
|
// }
|
//
|
//
|
// private static String expandURL(String url, Set<?> keys) {
|
// Matcher mc = RestTemplateUtil.QUERY_PARAM_PATTREN.matcher(url);
|
// StringBuilder sb = new StringBuilder(url);
|
// if (!mc.find()) {
|
// sb.append("&");
|
// } else {
|
// sb.append("?");
|
// }
|
//
|
// for (Object key : keys) {
|
// sb.append(key).append("=").append("{").append(key).append("}").append("&");
|
// }
|
// return sb.deleteCharAt(sb.length() - 1).toString();
|
// }
|
//
|
//}
|