[JAVA] 工具类之关于RestTemplateUtil工具类的使用

1755 0
Honkers 2022-11-8 18:05:38 | 显示全部楼层 |阅读模式
目录

    工具类-RestTemplateUtil工具类
      代码可直接复制使用
    RestTemplate配置类和工具类


工具类-RestTemplateUtil工具类


代码可直接复制使用

配置RestTemplate
  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.http.client.SimpleClientHttpRequestFactory;
  4. import org.springframework.web.client.RestTemplate;
  5. @Configuration
  6. public class RestTemplateConfig {
  7.     @Bean
  8.     public RestTemplate restTemplate() {
  9.         SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
  10.         requestFactory.setConnectTimeout(60000);
  11.         requestFactory.setReadTimeout(60000);
  12.         //使用okhttp
  13.         //RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
  14.         RestTemplate restTemplate = new RestTemplate(requestFactory);
  15.         return restTemplate;
  16.     }
  17. }
复制代码
RestTemplateUtil工具类
  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.http.HttpEntity;
  3. import org.springframework.http.HttpHeaders;
  4. import org.springframework.http.HttpMethod;
  5. import org.springframework.http.ResponseEntity;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.client.RestTemplate;
  8. /**
  9. * RestTemplateUtil工具类
  10. */
  11. @Component
  12. public class RestTemplateUtil {
  13.     @Autowired
  14.     private RestTemplate restTemplate;
  15.   /*  private static class SingletonRestTemplate {
  16.         static final RestTemplate INSTANCE = new RestTemplate();
  17.     }
  18.     private RestTemplateUtil() {
  19.     }
  20.     public static RestTemplate getInstance() {
  21.         return SingletonRestTemplate.INSTANCE;
  22.     }*/
  23.     /**
  24.      * post 请求
  25.      *
  26.      * @param url  请求路径
  27.      * @param data body数据
  28.      * @return
  29.      */
  30.     public String post(String url, String data) {
  31.         HttpHeaders headers = new HttpHeaders();
  32.         headers.add("Accept", "application/json");
  33.         headers.add("Content-Encoding", "UTF-8");
  34.         headers.add("Content-Type", "application/json; charset=UTF-8");
  35.         HttpEntity<String> requestEntity = new HttpEntity<>(data, headers);
  36.         return restTemplate.postForObject(url, requestEntity, String.class);
  37.     }
  38.     /**
  39.      * get 请求
  40.      *
  41.      * @param url   请求路径
  42.      * @param token JWT所需的Token,不需要的可去掉
  43.      * @return
  44.      */
  45.     public String get(String url, String token) {
  46.         HttpHeaders headers = new HttpHeaders();
  47.         headers.add("Accept", "application/json");
  48.         headers.add("Content-Encoding", "UTF-8");
  49.         headers.add("Content-Type", "application/json; charset=UTF-8");
  50.         if (token != null) {
  51.             headers.add("Authorization", token);
  52.         }
  53.         HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
  54.         ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
  55.         String responseBody = response.getBody();
  56.         return responseBody;
  57.     }
  58. /**
  59.      * get 请求
  60.      *
  61.      * @param url   请求路径
  62.      * @return
  63.      */
  64.     public  <T> T getWithSession(String url, String sessionId, Class<T> responseType, Object... uriVariables) {
  65.         HttpHeaders httpHeaders = new HttpHeaders();
  66.         httpHeaders.add("session_id", sessionId);
  67.         return get(url, httpHeaders, responseType, uriVariables).getBody();
  68.     }
  69.     // ----------------------------------GET-------------------------------------------------------
  70.     /**
  71.      * GET请求调用方式
  72.      *
  73.      * @param url 请求URL
  74.      * @param responseType 返回对象类型
  75.      * @return ResponseEntity 响应对象封装类
  76.      */
  77.     public  <T> ResponseEntity<T> get(String url, Class<T> responseType) {
  78.         return restTemplate.getForEntity(url, responseType);
  79.     }
  80.     /**
  81.      * GET请求调用方式
  82.      *
  83.      * @param url 请求URL
  84.      * @param responseType 返回对象类型
  85.      * @param uriVariables URL中的变量,按顺序依次对应
  86.      * @return ResponseEntity 响应对象封装类
  87.      */
  88.     public  <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... uriVariables) {
  89.         return restTemplate.getForEntity(url, responseType, uriVariables);
  90.     }
  91.     /**
  92.      * GET请求调用方式
  93.      *
  94.      * @param url 请求URL
  95.      * @param responseType 返回对象类型
  96.      * @param uriVariables URL中的变量,与Map中的key对应
  97.      * @return ResponseEntity 响应对象封装类
  98.      */
  99.     public  <T> ResponseEntity<T> get(String url, Class<T> responseType, Map<String, ?> uriVariables) {
  100.         return restTemplate.getForEntity(url, responseType, uriVariables);
  101.     }
  102.     /**
  103.      * 带请求头的GET请求调用方式
  104.      *
  105.      * @param url 请求URL
  106.      * @param headers 请求头参数
  107.      * @param responseType 返回对象类型
  108.      * @param uriVariables URL中的变量,按顺序依次对应
  109.      * @return ResponseEntity 响应对象封装类
  110.      */
  111.     public  <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Object... uriVariables) {
  112.         HttpHeaders httpHeaders = new HttpHeaders();
  113.         httpHeaders.setAll(headers);
  114.         return get(url, httpHeaders, responseType, uriVariables);
  115.     }
  116.     /**
  117.      * 带请求头的GET请求调用方式
  118.      *
  119.      * @param url 请求URL
  120.      * @param headers 请求头参数
  121.      * @param responseType 返回对象类型
  122.      * @param uriVariables URL中的变量,按顺序依次对应
  123.      * @return ResponseEntity 响应对象封装类
  124.      */
  125.     public  <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Object... uriVariables) {
  126.         HttpEntity<?> requestEntity = new HttpEntity<>(headers);
  127.         return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables);
  128.     }
  129.     /**
  130.      * 带请求头的GET请求调用方式
  131.      *
  132.      * @param url 请求URL
  133.      * @param headers 请求头参数
  134.      * @param responseType 返回对象类型
  135.      * @param uriVariables URL中的变量,与Map中的key对应
  136.      * @return ResponseEntity 响应对象封装类
  137.      */
  138.     public  <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> uriVariables) {
  139.         HttpHeaders httpHeaders = new HttpHeaders();
  140.         httpHeaders.setAll(headers);
  141.         return get(url, httpHeaders, responseType, uriVariables);
  142.     }
  143.     /**
  144.      * 带请求头的GET请求调用方式
  145.      *
  146.      * @param url 请求URL
  147.      * @param headers 请求头参数
  148.      * @param responseType 返回对象类型
  149.      * @param uriVariables URL中的变量,与Map中的key对应
  150.      * @return ResponseEntity 响应对象封装类
  151.      */
  152.     public  <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> uriVariables) {
  153.         HttpEntity<?> requestEntity = new HttpEntity<>(headers);
  154.         return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables);
  155.     }
  156.     // ----------------------------------POST-------------------------------------------------------
  157.     /**
  158.      * POST请求调用方式
  159.      *
  160.      * @param url 请求URL
  161.      * @param responseType 返回对象类型
  162.      * @return
  163.      */
  164.     public  <T> ResponseEntity<T> post(String url, Class<T> responseType) {
  165.         return restTemplate.postForEntity(url, HttpEntity.EMPTY, responseType);
  166.     }
  167.     /**
  168.      * POST请求调用方式
  169.      *
  170.      * @param url 请求URL
  171.      * @param requestBody 请求参数体
  172.      * @param responseType 返回对象类型
  173.      * @return ResponseEntity 响应对象封装类
  174.      */
  175.     public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {
  176.         return restTemplate.postForEntity(url, requestBody, responseType);
  177.     }
  178.     /**
  179.      * POST请求调用方式
  180.      *
  181.      * @param url 请求URL
  182.      * @param requestBody 请求参数体
  183.      * @param responseType 返回对象类型
  184.      * @param uriVariables URL中的变量,按顺序依次对应
  185.      * @return ResponseEntity 响应对象封装类
  186.      */
  187.     public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
  188.         return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);
  189.     }
  190.     /**
  191.      * POST请求调用方式
  192.      *
  193.      * @param url 请求URL
  194.      * @param requestBody 请求参数体
  195.      * @param responseType 返回对象类型
  196.      * @param uriVariables URL中的变量,与Map中的key对应
  197.      * @return ResponseEntity 响应对象封装类
  198.      */
  199.     public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  200.         return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);
  201.     }
  202.     /**
  203.      * 带请求头的POST请求调用方式
  204.      *
  205.      * @param url 请求URL
  206.      * @param headers 请求头参数
  207.      * @param requestBody 请求参数体
  208.      * @param responseType 返回对象类型
  209.      * @param uriVariables URL中的变量,按顺序依次对应
  210.      * @return ResponseEntity 响应对象封装类
  211.      */
  212.     public  <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
  213.         HttpHeaders httpHeaders = new HttpHeaders();
  214.         httpHeaders.setAll(headers);
  215.         return post(url, httpHeaders, requestBody, responseType, uriVariables);
  216.     }
  217.     /**
  218.      * 带请求头的POST请求调用方式
  219.      *
  220.      * @param url 请求URL
  221.      * @param headers 请求头参数
  222.      * @param requestBody 请求参数体
  223.      * @param responseType 返回对象类型
  224.      * @param uriVariables URL中的变量,按顺序依次对应
  225.      * @return ResponseEntity 响应对象封装类
  226.      */
  227.     public  <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
  228.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
  229.         return post(url, requestEntity, responseType, uriVariables);
  230.     }
  231.     /**
  232.      * 带请求头的POST请求调用方式
  233.      *
  234.      * @param url 请求URL
  235.      * @param headers 请求头参数
  236.      * @param requestBody 请求参数体
  237.      * @param responseType 返回对象类型
  238.      * @param uriVariables URL中的变量,与Map中的key对应
  239.      * @return ResponseEntity 响应对象封装类
  240.      */
  241.     public  <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  242.         HttpHeaders httpHeaders = new HttpHeaders();
  243.         httpHeaders.setAll(headers);
  244.         return post(url, httpHeaders, requestBody, responseType, uriVariables);
  245.     }
  246.     /**
  247.      * 带请求头的POST请求调用方式
  248.      *
  249.      * @param url 请求URL
  250.      * @param headers 请求头参数
  251.      * @param requestBody 请求参数体
  252.      * @param responseType 返回对象类型
  253.      * @param uriVariables URL中的变量,与Map中的key对应
  254.      * @return ResponseEntity 响应对象封装类
  255.      */
  256.     public  <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  257.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
  258.         return post(url, requestEntity, responseType, uriVariables);
  259.     }
  260.     /**
  261.      * 自定义请求头和请求体的POST请求调用方式
  262.      *
  263.      * @param url 请求URL
  264.      * @param requestEntity 请求头和请求体封装对象
  265.      * @param responseType 返回对象类型
  266.      * @param uriVariables URL中的变量,按顺序依次对应
  267.      * @return ResponseEntity 响应对象封装类
  268.      */
  269.     public  <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
  270.         return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);
  271.     }
  272.     /**
  273.      * 自定义请求头和请求体的POST请求调用方式
  274.      *
  275.      * @param url 请求URL
  276.      * @param requestEntity 请求头和请求体封装对象
  277.      * @param responseType 返回对象类型
  278.      * @param uriVariables URL中的变量,与Map中的key对应
  279.      * @return ResponseEntity 响应对象封装类
  280.      */
  281.     public  <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
  282.         return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);
  283.     }
  284.     // ----------------------------------PUT-------------------------------------------------------
  285.     /**
  286.      * PUT请求调用方式
  287.      *
  288.      * @param url 请求URL
  289.      * @param responseType 返回对象类型
  290.      * @param uriVariables URL中的变量,按顺序依次对应
  291.      * @return ResponseEntity 响应对象封装类
  292.      */
  293.     public  <T> ResponseEntity<T> put(String url, Class<T> responseType, Object... uriVariables) {
  294.         return put(url, HttpEntity.EMPTY, responseType, uriVariables);
  295.     }
  296.     /**
  297.      * PUT请求调用方式
  298.      *
  299.      * @param url 请求URL
  300.      * @param requestBody 请求参数体
  301.      * @param responseType 返回对象类型
  302.      * @param uriVariables URL中的变量,按顺序依次对应
  303.      * @return ResponseEntity 响应对象封装类
  304.      */
  305.     public  <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
  306.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
  307.         return put(url, requestEntity, responseType, uriVariables);
  308.     }
  309.     /**
  310.      * PUT请求调用方式
  311.      *
  312.      * @param url 请求URL
  313.      * @param requestBody 请求参数体
  314.      * @param responseType 返回对象类型
  315.      * @param uriVariables URL中的变量,与Map中的key对应
  316.      * @return ResponseEntity 响应对象封装类
  317.      */
  318.     public  <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  319.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
  320.         return put(url, requestEntity, responseType, uriVariables);
  321.     }
  322.     /**
  323.      * 带请求头的PUT请求调用方式
  324.      *
  325.      * @param url 请求URL
  326.      * @param headers 请求头参数
  327.      * @param requestBody 请求参数体
  328.      * @param responseType 返回对象类型
  329.      * @param uriVariables URL中的变量,按顺序依次对应
  330.      * @return ResponseEntity 响应对象封装类
  331.      */
  332.     public  <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
  333.         HttpHeaders httpHeaders = new HttpHeaders();
  334.         httpHeaders.setAll(headers);
  335.         return put(url, httpHeaders, requestBody, responseType, uriVariables);
  336.     }
  337.     /**
  338.      * 带请求头的PUT请求调用方式
  339.      *
  340.      * @param url 请求URL
  341.      * @param headers 请求头参数
  342.      * @param requestBody 请求参数体
  343.      * @param responseType 返回对象类型
  344.      * @param uriVariables URL中的变量,按顺序依次对应
  345.      * @return ResponseEntity 响应对象封装类
  346.      */
  347.     public  <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
  348.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
  349.         return put(url, requestEntity, responseType, uriVariables);
  350.     }
  351.     /**
  352.      * 带请求头的PUT请求调用方式
  353.      *
  354.      * @param url 请求URL
  355.      * @param headers 请求头参数
  356.      * @param requestBody 请求参数体
  357.      * @param responseType 返回对象类型
  358.      * @param uriVariables URL中的变量,与Map中的key对应
  359.      * @return ResponseEntity 响应对象封装类
  360.      */
  361.     public  <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  362.         HttpHeaders httpHeaders = new HttpHeaders();
  363.         httpHeaders.setAll(headers);
  364.         return put(url, httpHeaders, requestBody, responseType, uriVariables);
  365.     }
  366.     /**
  367.      * 带请求头的PUT请求调用方式
  368.      *
  369.      * @param url 请求URL
  370.      * @param headers 请求头参数
  371.      * @param requestBody 请求参数体
  372.      * @param responseType 返回对象类型
  373.      * @param uriVariables URL中的变量,与Map中的key对应
  374.      * @return ResponseEntity 响应对象封装类
  375.      */
  376.     public  <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  377.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
  378.         return put(url, requestEntity, responseType, uriVariables);
  379.     }
  380.     /**
  381.      * 自定义请求头和请求体的PUT请求调用方式
  382.      *
  383.      * @param url 请求URL
  384.      * @param requestEntity 请求头和请求体封装对象
  385.      * @param responseType 返回对象类型
  386.      * @param uriVariables URL中的变量,按顺序依次对应
  387.      * @return ResponseEntity 响应对象封装类
  388.      */
  389.     public  <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
  390.         return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);
  391.     }
  392.     /**
  393.      * 自定义请求头和请求体的PUT请求调用方式
  394.      *
  395.      * @param url 请求URL
  396.      * @param requestEntity 请求头和请求体封装对象
  397.      * @param responseType 返回对象类型
  398.      * @param uriVariables URL中的变量,与Map中的key对应
  399.      * @return ResponseEntity 响应对象封装类
  400.      */
  401.     public  <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
  402.         return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);
  403.     }
  404.     // ----------------------------------DELETE-------------------------------------------------------
  405.     /**
  406.      * DELETE请求调用方式
  407.      *
  408.      * @param url 请求URL
  409.      * @param responseType 返回对象类型
  410.      * @param uriVariables URL中的变量,按顺序依次对应
  411.      * @return ResponseEntity 响应对象封装类
  412.      */
  413.     public  <T> ResponseEntity<T> delete(String url, Class<T> responseType, Object... uriVariables) {
  414.         return delete(url, HttpEntity.EMPTY, responseType, uriVariables);
  415.     }
  416.     /**
  417.      * DELETE请求调用方式
  418.      *
  419.      * @param url 请求URL
  420.      * @param responseType 返回对象类型
  421.      * @param uriVariables URL中的变量,与Map中的key对应
  422.      * @return ResponseEntity 响应对象封装类
  423.      */
  424.     public  <T> ResponseEntity<T> delete(String url, Class<T> responseType, Map<String, ?> uriVariables) {
  425.         return delete(url, HttpEntity.EMPTY, responseType, uriVariables);
  426.     }
  427.     /**
  428.      * DELETE请求调用方式
  429.      *
  430.      * @param url 请求URL
  431.      * @param requestBody 请求参数体
  432.      * @param responseType 返回对象类型
  433.      * @param uriVariables URL中的变量,按顺序依次对应
  434.      * @return ResponseEntity 响应对象封装类
  435.      */
  436.     public  <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
  437.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
  438.         return delete(url, requestEntity, responseType, uriVariables);
  439.     }
  440.     /**
  441.      * DELETE请求调用方式
  442.      *
  443.      * @param url 请求URL
  444.      * @param requestBody 请求参数体
  445.      * @param responseType 返回对象类型
  446.      * @param uriVariables URL中的变量,与Map中的key对应
  447.      * @return ResponseEntity 响应对象封装类
  448.      */
  449.     public  <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  450.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
  451.         return delete(url, requestEntity, responseType, uriVariables);
  452.     }
  453.     /**
  454.      * 带请求头的DELETE请求调用方式
  455.      *
  456.      * @param url 请求URL
  457.      * @param headers 请求头参数
  458.      * @param responseType 返回对象类型
  459.      * @param uriVariables URL中的变量,按顺序依次对应
  460.      * @return ResponseEntity 响应对象封装类
  461.      */
  462.     public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Object... uriVariables) {
  463.         HttpHeaders httpHeaders = new HttpHeaders();
  464.         httpHeaders.setAll(headers);
  465.         return delete(url, httpHeaders, responseType, uriVariables);
  466.     }
  467.     /**
  468.      * 带请求头的DELETE请求调用方式
  469.      *
  470.      * @param url 请求URL
  471.      * @param headers 请求头参数
  472.      * @param responseType 返回对象类型
  473.      * @param uriVariables URL中的变量,按顺序依次对应
  474.      * @return ResponseEntity 响应对象封装类
  475.      */
  476.     public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Object... uriVariables) {
  477.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
  478.         return delete(url, requestEntity, responseType, uriVariables);
  479.     }
  480.     /**
  481.      * 带请求头的DELETE请求调用方式
  482.      *
  483.      * @param url 请求URL
  484.      * @param headers 请求头参数
  485.      * @param responseType 返回对象类型
  486.      * @param uriVariables URL中的变量,与Map中的key对应
  487.      * @return ResponseEntity 响应对象封装类
  488.      */
  489.     public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> uriVariables) {
  490.         HttpHeaders httpHeaders = new HttpHeaders();
  491.         httpHeaders.setAll(headers);
  492.         return delete(url, httpHeaders, responseType, uriVariables);
  493.     }
  494.     /**
  495.      * 带请求头的DELETE请求调用方式
  496.      *
  497.      * @param url 请求URL
  498.      * @param headers 请求头参数
  499.      * @param responseType 返回对象类型
  500.      * @param uriVariables URL中的变量,与Map中的key对应
  501.      * @return ResponseEntity 响应对象封装类
  502.      */
  503.     public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> uriVariables) {
  504.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
  505.         return delete(url, requestEntity, responseType, uriVariables);
  506.     }
  507.     /**
  508.      * 带请求头的DELETE请求调用方式
  509.      *
  510.      * @param url 请求URL
  511.      * @param headers 请求头参数
  512.      * @param requestBody 请求参数体
  513.      * @param responseType 返回对象类型
  514.      * @param uriVariables URL中的变量,按顺序依次对应
  515.      * @return ResponseEntity 响应对象封装类
  516.      */
  517.     public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
  518.         HttpHeaders httpHeaders = new HttpHeaders();
  519.         httpHeaders.setAll(headers);
  520.         return delete(url, httpHeaders, requestBody, responseType, uriVariables);
  521.     }
  522.     /**
  523.      * 带请求头的DELETE请求调用方式
  524.      *
  525.      * @param url 请求URL
  526.      * @param headers 请求头参数
  527.      * @param requestBody 请求参数体
  528.      * @param responseType 返回对象类型
  529.      * @param uriVariables URL中的变量,按顺序依次对应
  530.      * @return ResponseEntity 响应对象封装类
  531.      */
  532.     public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {
  533.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
  534.         return delete(url, requestEntity, responseType, uriVariables);
  535.     }
  536.     /**
  537.      * 带请求头的DELETE请求调用方式
  538.      *
  539.      * @param url 请求URL
  540.      * @param headers 请求头参数
  541.      * @param requestBody 请求参数体
  542.      * @param responseType 返回对象类型
  543.      * @param uriVariables URL中的变量,与Map中的key对应
  544.      * @return ResponseEntity 响应对象封装类
  545.      */
  546.     public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  547.         HttpHeaders httpHeaders = new HttpHeaders();
  548.         httpHeaders.setAll(headers);
  549.         return delete(url, httpHeaders, requestBody, responseType, uriVariables);
  550.     }
  551.     /**
  552.      * 带请求头的DELETE请求调用方式
  553.      *
  554.      * @param url 请求URL
  555.      * @param headers 请求头参数
  556.      * @param requestBody 请求参数体
  557.      * @param responseType 返回对象类型
  558.      * @param uriVariables URL中的变量,与Map中的key对应
  559.      * @return ResponseEntity 响应对象封装类
  560.      */
  561.     public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
  562.         HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
  563.         return delete(url, requestEntity, responseType, uriVariables);
  564.     }
  565.     /**
  566.      * 自定义请求头和请求体的DELETE请求调用方式
  567.      *
  568.      * @param url 请求URL
  569.      * @param requestEntity 请求头和请求体封装对象
  570.      * @param responseType 返回对象类型
  571.      * @param uriVariables URL中的变量,按顺序依次对应
  572.      * @return ResponseEntity 响应对象封装类
  573.      */
  574.     public  <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
  575.         return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);
  576.     }
  577.     /**
  578.      * 自定义请求头和请求体的DELETE请求调用方式
  579.      *
  580.      * @param url 请求URL
  581.      * @param requestEntity 请求头和请求体封装对象
  582.      * @param responseType 返回对象类型
  583.      * @param uriVariables URL中的变量,与Map中的key对应
  584.      * @return ResponseEntity 响应对象封装类
  585.      */
  586.     public  <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
  587.         return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);
  588.     }
  589.     // ----------------------------------通用方法-------------------------------------------------------
  590.     /**
  591.      * 通用调用方式
  592.      *
  593.      * @param url 请求URL
  594.      * @param method 请求方法类型
  595.      * @param requestEntity 请求头和请求体封装对象
  596.      * @param responseType 返回对象类型
  597.      * @param uriVariables URL中的变量,按顺序依次对应
  598.      * @return ResponseEntity 响应对象封装类
  599.      */
  600.     public  <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
  601.         return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables);
  602.     }
  603.     /**
  604.      * 通用调用方式
  605.      *
  606.      * @param url 请求URL
  607.      * @param method 请求方法类型
  608.      * @param requestEntity 请求头和请求体封装对象
  609.      * @param responseType 返回对象类型
  610.      * @param uriVariables URL中的变量,与Map中的key对应
  611.      * @return ResponseEntity 响应对象封装类
  612.      */
  613.     public  <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {
  614.         return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables);
  615.     }
  616. }
复制代码
RestTemplate配置类和工具类

RestTemplate配置类
  1. @Configuration
  2. public class RestTemplateConfig {
  3.   @Bean
  4.   public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
  5.     RestTemplate build = restTemplateBuilder
  6.         .requestFactory(OkHttp3ClientHttpRequestFactory.class)
  7.         .setConnectTimeout(Duration.ofSeconds(10))
  8.         .setReadTimeout(Duration.ofSeconds(20))
  9.         .build();
  10.     build.getMessageConverters().add(new TextJsonSupport(Jackson2ObjectMapperBuilder.json().build()));
  11.     return build;
  12.   }
  13. }
  14. public class TextJsonSupport extends MappingJackson2HttpMessageConverter {
  15.   public TextJsonSupport(ObjectMapper objectMapper) {
  16.     super(objectMapper);
  17.     setSupportedMediaTypes(Arrays.asList(new MediaType("text", "json")));
  18.   }
  19.   public TextJsonSupport() {
  20.     super();
  21.   }
  22. }
复制代码
RestTemplate工具类
  1. public class RestTemplateUtil {
  2.   public static Object doGet(String url, HttpHeaders httpHeaders) {
  3.     RestTemplate restTemplate = new RestTemplate();
  4.     HttpEntity<Object> request = new HttpEntity<>(httpHeaders);
  5.     ResponseEntity<Object> result = restTemplate.exchange(url, HttpMethod.GET, request, Object.class);
  6.     if (null != result && null != result.getBody()) {
  7.       return result.getBody();
  8.     }
  9.     return null;
  10.   }
  11.   public static Object doPost(String url, HttpHeaders httpHeaders, JSONObject params) {
  12.     RestTemplate restTemplate = new RestTemplate();
  13.     HttpEntity<Object> request = new HttpEntity<>(params, httpHeaders);
  14.     ResponseEntity<Object> result = restTemplate.exchange(url, HttpMethod.POST, request, Object.class);
  15.     if (null != result && null != result.getBody()) {
  16.       return result.getBody();
  17.     }
  18.     return null;
  19.   }
  20.   public static Object doPostJson(String url, HttpHeaders httpHeaders, JSONObject params) {
  21.     RestTemplate restTemplate = new RestTemplate();
  22.     HttpEntity<Object> request = new HttpEntity<>(params, httpHeaders);
  23.     ResponseEntity<JSONObject> result = restTemplate.exchange(url, HttpMethod.POST, request, JSONObject.class);
  24.     if (null != result && null != result.getBody()) {
  25.       return result.getBody();
  26.     }
  27.     return null;
  28.   }
  29. }
复制代码
以上为个人经验,希望能给大家一个参考,也希望大家多多支持中国红客联盟。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4004
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行