欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

工具類之關(guān)于RestTemplateUtil工具類的使用

 更新時間:2022年10月28日 09:00:14   作者:阿拉的夢想  
這篇文章主要介紹了工具類之關(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 請求
     *
     * @param url  請求路徑
     * @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 請求
     *
     * @param url   請求路徑
     * @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 請求
     *
     * @param url   請求路徑
     * @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請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> get(String url, Class<T> responseType) {
        return restTemplate.getForEntity(url, responseType);
    }

    /**
     * GET請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... uriVariables) {
        return restTemplate.getForEntity(url, responseType, uriVariables);
    }

    /**
     * GET請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> get(String url, Class<T> responseType, Map<String, ?> uriVariables) {
        return restTemplate.getForEntity(url, responseType, uriVariables);
    }

    /**
     * 帶請求頭的GET請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的GET請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的GET請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的GET請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @return
     */
    public  <T> ResponseEntity<T> post(String url, Class<T> responseType) {
        return restTemplate.postForEntity(url, HttpEntity.EMPTY, responseType);
    }

    /**
     * POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {
        return restTemplate.postForEntity(url, requestBody, responseType);
    }

    /**
     * POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
        return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);
    }

    /**
     * POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
        return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);
    }

    /**
     * 帶請求頭的POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 自定義請求頭和請求體的POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
        return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);
    }

    /**
     * 自定義請求頭和請求體的POST請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> put(String url, Class<T> responseType, Object... uriVariables) {
        return put(url, HttpEntity.EMPTY, responseType, uriVariables);
    }

    /**
     * PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 自定義請求頭和請求體的PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
        return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);
    }

    /**
     * 自定義請求頭和請求體的PUT請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> delete(String url, Class<T> responseType, Object... uriVariables) {
        return delete(url, HttpEntity.EMPTY, responseType, uriVariables);
    }

    /**
     * DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> delete(String url, Class<T> responseType, Map<String, ?> uriVariables) {
        return delete(url, HttpEntity.EMPTY, responseType, uriVariables);
    }

    /**
     * DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 帶請求頭的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param headers 請求頭參數(shù)
     * @param requestBody 請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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);
    }

    /**
     * 自定義請求頭和請求體的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public  <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
        return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);
    }

    /**
     * 自定義請求頭和請求體的DELETE請求調(diào)用方式
     *
     * @param url 請求URL
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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 請求URL
     * @param method 請求方法類型
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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 請求URL
     * @param method 請求方法類型
     * @param requestEntity 請求頭和請求體封裝對象
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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;
? ? }
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Security內(nèi)置過濾器的維護(hù)方法

    Spring?Security內(nèi)置過濾器的維護(hù)方法

    這篇文章主要介紹了Spring?Security的內(nèi)置過濾器是如何維護(hù)的,本文給我們分析一下HttpSecurity維護(hù)過濾器的幾個方法,需要的朋友可以參考下
    2022-02-02
  • Spring?Security使用數(shù)據(jù)庫登錄認(rèn)證授權(quán)

    Spring?Security使用數(shù)據(jù)庫登錄認(rèn)證授權(quán)

    本文主要介紹了Spring?Security使用數(shù)據(jù)庫登錄認(rèn)證授權(quán),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 教你構(gòu)建第一個Java Applet程序

    教你構(gòu)建第一個Java Applet程序

    本文的主要目的是創(chuàng)建一個簡單的Java applet,需要的朋友可以參考下
    2014-10-10
  • spring中@Autowired自動注入依賴項的使用

    spring中@Autowired自動注入依賴項的使用

    當(dāng)使用@Autowired注解時,它可以自動注入依賴項,例如其他類的實例,本文就來詳細(xì)的介紹一下,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java中的大數(shù)類簡單實現(xiàn)

    Java中的大數(shù)類簡單實現(xiàn)

    這篇文章主要介紹了Java中的大數(shù)類簡單實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java 反射獲取類詳細(xì)信息的常用方法總結(jié)

    Java 反射獲取類詳細(xì)信息的常用方法總結(jié)

    Java 反射獲取類詳細(xì)信息的常用方法總結(jié),需要的朋友可以參考一下
    2013-03-03
  • Springmvc實現(xiàn)文件上傳

    Springmvc實現(xiàn)文件上傳

    這篇文章主要為大家詳細(xì)介紹了Springmvc實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 全面解析SpringBoot配置文件

    全面解析SpringBoot配置文件

    這篇文章主要為大家全面的解析SpringBoot-配置文件,文中附含詳細(xì)的圖文示例代碼,以便同學(xué)們能更好的理解,有需要的同學(xué)可以借鑒參考下
    2021-09-09
  • 淺析Java SPI 與 dubbo SPI

    淺析Java SPI 與 dubbo SPI

    在Java中SPI是被用來設(shè)計給服務(wù)提供商做插件使用的。本文重點給大家介紹Java SPI 與 dubbo SPI的相關(guān)知識及區(qū)別介紹,感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2021-05-05
  • SpringBoot異步實現(xiàn)的8種方式

    SpringBoot異步實現(xiàn)的8種方式

    異步執(zhí)行對于開發(fā)者來說并不陌生,在實際的開發(fā)過程中,很多場景多會使用到異步,本文主要介紹了SpringBoot異步實現(xiàn)的8種方式,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09

最新評論