工具類之關(guān)于RestTemplateUtil工具類的使用
工具類-RestTemplateUtil工具類
代碼可直接復(fù)制使用
配置RestTemplate
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(60000);
requestFactory.setReadTimeout(60000);
//使用okhttp
//RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
RestTemplate restTemplate = new RestTemplate(requestFactory);
return restTemplate;
}
}RestTemplateUtil工具類
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.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
/**
* RestTemplateUtil工具類
*/
@Component
public class RestTemplateUtil {
@Autowired
private RestTemplate restTemplate;
/* private static class SingletonRestTemplate {
static final RestTemplate INSTANCE = new RestTemplate();
}
private RestTemplateUtil() {
}
public static RestTemplate getInstance() {
return SingletonRestTemplate.INSTANCE;
}*/
/**
* post 請(qǐng)求
*
* @param url 請(qǐng)求路徑
* @param data body數(shù)據(jù)
* @return
*/
public String post(String url, String data) {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Encoding", "UTF-8");
headers.add("Content-Type", "application/json; charset=UTF-8");
HttpEntity<String> requestEntity = new HttpEntity<>(data, headers);
return restTemplate.postForObject(url, requestEntity, String.class);
}
/**
* get 請(qǐng)求
*
* @param url 請(qǐng)求路徑
* @param token JWT所需的Token,不需要的可去掉
* @return
*/
public String get(String url, String token) {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Encoding", "UTF-8");
headers.add("Content-Type", "application/json; charset=UTF-8");
if (token != null) {
headers.add("Authorization", token);
}
HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
String responseBody = response.getBody();
return responseBody;
}
/**
* get 請(qǐng)求
*
* @param url 請(qǐng)求路徑
* @return
*/
public <T> T getWithSession(String url, String sessionId, Class<T> responseType, Object... uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("session_id", sessionId);
return get(url, httpHeaders, responseType, uriVariables).getBody();
}
// ----------------------------------GET-------------------------------------------------------
/**
* GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, Class<T> responseType) {
return restTemplate.getForEntity(url, responseType);
}
/**
* GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... uriVariables) {
return restTemplate.getForEntity(url, responseType, uriVariables);
}
/**
* GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, Class<T> responseType, Map<String, ?> uriVariables) {
return restTemplate.getForEntity(url, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Object... uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return get(url, httpHeaders, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Object... uriVariables) {
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return get(url, httpHeaders, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的GET請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables);
}
// ----------------------------------POST-------------------------------------------------------
/**
* POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @return
*/
public <T> ResponseEntity<T> post(String url, Class<T> responseType) {
return restTemplate.postForEntity(url, HttpEntity.EMPTY, responseType);
}
/**
* POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {
return restTemplate.postForEntity(url, requestBody, responseType);
}
/**
* POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);
}
/**
* POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return post(url, httpHeaders, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return post(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return post(url, httpHeaders, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return post(url, requestEntity, responseType, uriVariables);
}
/**
* 自定義請(qǐng)求頭和請(qǐng)求體的POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);
}
/**
* 自定義請(qǐng)求頭和請(qǐng)求體的POST請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);
}
// ----------------------------------PUT-------------------------------------------------------
/**
* PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, Class<T> responseType, Object... uriVariables) {
return put(url, HttpEntity.EMPTY, responseType, uriVariables);
}
/**
* PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return put(url, requestEntity, responseType, uriVariables);
}
/**
* PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return put(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return put(url, httpHeaders, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return put(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return put(url, httpHeaders, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return put(url, requestEntity, responseType, uriVariables);
}
/**
* 自定義請(qǐng)求頭和請(qǐng)求體的PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);
}
/**
* 自定義請(qǐng)求頭和請(qǐng)求體的PUT請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);
}
// ----------------------------------DELETE-------------------------------------------------------
/**
* DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Class<T> responseType, Object... uriVariables) {
return delete(url, HttpEntity.EMPTY, responseType, uriVariables);
}
/**
* DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Class<T> responseType, Map<String, ?> uriVariables) {
return delete(url, HttpEntity.EMPTY, responseType, uriVariables);
}
/**
* DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return delete(url, requestEntity, responseType, uriVariables);
}
/**
* DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return delete(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Object... uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Object... uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
return delete(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
return delete(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return delete(url, requestEntity, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, requestBody, responseType, uriVariables);
}
/**
* 帶請(qǐng)求頭的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param headers 請(qǐng)求頭參數(shù)
* @param requestBody 請(qǐng)求參數(shù)體
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return delete(url, requestEntity, responseType, uriVariables);
}
/**
* 自定義請(qǐng)求頭和請(qǐng)求體的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);
}
/**
* 自定義請(qǐng)求頭和請(qǐng)求體的DELETE請(qǐng)求調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);
}
// ----------------------------------通用方法-------------------------------------------------------
/**
* 通用調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param method 請(qǐng)求方法類型
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables);
}
/**
* 通用調(diào)用方式
*
* @param url 請(qǐng)求URL
* @param method 請(qǐng)求方法類型
* @param requestEntity 請(qǐng)求頭和請(qǐng)求體封裝對(duì)象
* @param responseType 返回對(duì)象類型
* @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
* @return ResponseEntity 響應(yīng)對(duì)象封裝類
*/
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables);
}
}RestTemplate配置類和工具類
RestTemplate配置類
@Configuration
public class RestTemplateConfig {
? ? @Bean
? ? public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
? ? ? ? RestTemplate build = restTemplateBuilder
? ? ? ? ? ? ? ? .requestFactory(OkHttp3ClientHttpRequestFactory.class)
? ? ? ? ? ? ? ? .setConnectTimeout(Duration.ofSeconds(10))
? ? ? ? ? ? ? ? .setReadTimeout(Duration.ofSeconds(20))
? ? ? ? ? ? ? ? .build();
? ? ? ? build.getMessageConverters().add(new TextJsonSupport(Jackson2ObjectMapperBuilder.json().build()));
? ? ? ? return build;
? ? }
}
public class TextJsonSupport extends MappingJackson2HttpMessageConverter {
? ? public TextJsonSupport(ObjectMapper objectMapper) {
? ? ? ? super(objectMapper);
? ? ? ? setSupportedMediaTypes(Arrays.asList(new MediaType("text", "json")));
? ? }
?
? ? public TextJsonSupport() {
? ? ? ? super();
? ? }
}RestTemplate工具類
public class RestTemplateUtil {
? ? public static Object doGet(String url, HttpHeaders httpHeaders) {
? ? ? ? RestTemplate restTemplate = new RestTemplate();
? ? ? ? HttpEntity<Object> request = new HttpEntity<>(httpHeaders);
? ? ? ? ResponseEntity<Object> result = restTemplate.exchange(url, HttpMethod.GET, request, Object.class);
? ? ? ? if (null != result && null != result.getBody()) {
? ? ? ? ? ? return result.getBody();
? ? ? ? }
? ? ? ? return null;
? ? }
?
? ? public static Object doPost(String url, HttpHeaders httpHeaders, JSONObject params) {
? ? ? ? RestTemplate restTemplate = new RestTemplate();
? ? ? ? HttpEntity<Object> request = new HttpEntity<>(params, httpHeaders);
? ? ? ? ResponseEntity<Object> result = restTemplate.exchange(url, HttpMethod.POST, request, Object.class);
? ? ? ? if (null != result && null != result.getBody()) {
? ? ? ? ? ? return result.getBody();
? ? ? ? }
? ? ? ? return null;
? ? }
?
? ? public static Object doPostJson(String url, HttpHeaders httpHeaders, JSONObject params) {
? ? ? ? RestTemplate restTemplate = new RestTemplate();
? ? ? ? HttpEntity<Object> request = new HttpEntity<>(params, httpHeaders);
? ? ? ? ResponseEntity<JSONObject> result = restTemplate.exchange(url, HttpMethod.POST, request, JSONObject.class);
? ? ? ? if (null != result && null != result.getBody()) {
? ? ? ? ? ? return result.getBody();
? ? ? ? }
? ? ? ? return null;
? ? }
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用@Value和@PropertySource注入外部資源
這篇文章主要介紹了如何使用@Value和@PropertySource注入外部資源的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
IDEA打開java項(xiàng)目后里面的java文件不能運(yùn)行解決辦法
這篇文章主要給大家介紹了關(guān)于IDEA打開java項(xiàng)目后里面的java文件不能運(yùn)行的解決辦法,有時(shí)候想運(yùn)行別人的項(xiàng)目,但是別人的項(xiàng)目并非IDEA項(xiàng)目(甚至只有源碼),當(dāng)我們打開項(xiàng)目時(shí)候,并不能運(yùn)行,需要的朋友可以參考下2023-10-10
Feign調(diào)用服務(wù)時(shí)丟失Cookie和Header信息的解決方案
這篇文章主要介紹了Feign調(diào)用服務(wù)時(shí)丟失Cookie和Header信息的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot項(xiàng)目實(shí)現(xiàn)統(tǒng)一異常處理的最佳方案
在前后端分離的項(xiàng)目開發(fā)過程中,我們通常會(huì)對(duì)數(shù)據(jù)返回格式進(jìn)行統(tǒng)一的處理,這樣可以方便前端人員取數(shù)據(jù),后端發(fā)生異常時(shí)同樣會(huì)使用此格式將異常信息返回給前端,本文介紹了如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)統(tǒng)一異常處理,如有錯(cuò)誤,還望批評(píng)指正2024-02-02
Netty網(wǎng)絡(luò)編程實(shí)戰(zhàn)之搭建Netty服務(wù)器
Netty是JBOSS開源的一款NIO網(wǎng)絡(luò)編程框架,可用于快速開發(fā)網(wǎng)絡(luò)的應(yīng)用。Netty是一個(gè)異步的、基于事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)高性能的服務(wù)端和客戶端。本文將詳細(xì)說說如何搭建Netty服務(wù)器,需要的可以參考一下2022-10-10
教你用MAT工具分析Java堆內(nèi)存泄漏問題的解決方法
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著如何使用MAT工具分析Java堆內(nèi)存泄漏問題的解決方法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Java實(shí)現(xiàn)更新順序表中的指定元素的示例
本文主要介紹了Java實(shí)現(xiàn)更新順序表中的指定元素的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

