RestTemplate调用方法

// 上传
R result = HttpUtils.doUpload(url,data,fqPeList,HttpUtils.getHttpHeaders(httpHeads), R.class);

具体工具类

public class HttpUtils {

    private static RestTemplate restTemplate = createRestTemplate();

   // 处理https证书异常问题
    public static RestTemplate createRestTemplate() {
        try {
            SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
            // 信任所有
            TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return null;
                        }
                        public void checkClientTrusted(
                                java.security.cert.X509Certificate[] certs, String authType) {
                        }
                        public void checkServerTrusted(
                                java.security.cert.X509Certificate[] certs, String authType) {
                        }
                    }
            };
            sslContext.init(null, trustAllCerts, new SecureRandom());
            HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
            requestFactory.setBufferRequestBody(false);
            requestFactory.setHttpClient(HttpClients.custom()
                    .setSSLContext(sslContext)
                    .setSSLHostnameVerifier(new NoopHostnameVerifier())
                    .build());
            return new RestTemplate(requestFactory);
        } catch (NoSuchAlgorithmException | KeyManagementException e) {
            throw new RuntimeException(e);
        }
    }

   // post请求
    public static <T> T doPost(String url, String data, HttpHeaders httpHeaders, Class<T> resultClazz){
        HttpEntity<Object> requestEntity = new HttpEntity<Object>(data, httpHeaders);
        ResponseEntity<T> responseEntity = restTemplate.postForEntity(url, requestEntity, resultClazz);
        T resut = responseEntity.getBody();
        return resut;
    }
	// get请求
    public static <T> T doGet(String url, HttpHeaders httpHeaders, Class<T> resultClazz){
        HttpEntity<Object> requestEntity = new HttpEntity<Object>(null, httpHeaders);
        ResponseEntity<T> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, resultClazz);
        T resut = responseEntity.getBody();
        return resut;
    }
   // 获取http请求头
    public static HttpHeaders getHttpHeaders(Map<String,String> map){
        HttpHeaders requestHeaders = new HttpHeaders();
        if(!Objects.isNull(map) && map.size() > 0){
            map.forEach((key,value)->{
                requestHeaders.add(key,value);
            });
        }
        return requestHeaders;
    }
   //上传文件
    public static <T> T doUpload(String url, String data, List<File> files, HttpHeaders httpHeaders, Class<T> resultClazz){
        MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
        for(File file : files){
            body.add("files", new FileSystemResource(file));
        }
        body.add("content", data);
        HttpEntity<Object> requestEntity = new HttpEntity<Object>(body, httpHeaders);
        ResponseEntity<T> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, resultClazz);
        return responseEntity.getBody();
    }


}

处理证书异常问题依赖

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.13</version>
</dependency>
RestTemplate 是 Spring 提供的一个 HTTP 请求工具,可用于发送各种 HTTP 请求,包括 DELETE 请求。以下是 RestTemplate 调用 delete 方法的使用指南和示例代码: ### 使用指南 RestTemplate 的 `delete` 方法用于发送 HTTP DELETE 请求,该方法有几种不同的重载形式,常见的使用场景如下: - **无参数的 DELETE 请求**:当不需要传递参数时,直接传入请求的 URL 即可。 - **带参数的 DELETE 请求**:如果需要传递参数,可以使用占位符的方式将参数嵌入到 URL 中。 ### 示例代码 以下是使用 RestTemplate 调用 delete 方法的示例代码: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class DeleteExampleController { @Autowired private RestTemplate restTemplate; private String urlPrefix = "http://example.com/api"; // 无参数的 DELETE 请求 @RequestMapping(value = "/delete1") public void testDelete1() { String url = urlPrefix + "/delete"; restTemplate.delete(url); } // 带参数的 DELETE 请求 @RequestMapping(value = "/delete2") public void testDelete2() { String url = urlPrefix + "/delete?protocol={protocol}&operator={operator}"; restTemplate.delete(url, "NBIot", "ChinaMobile"); } } ``` 在上述代码中,`testDelete1` 方法发送了一个无参数的 DELETE 请求,而 `testDelete2` 方法发送了一个带参数的 DELETE 请求,使用占位符 `{protocol}` 和 `{operator}` 来传递参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值