返回博主主页

resttemplate 设置https不校验证书

https 不检验证书

public RestTemplate restTemplateHttps()  {
        RestTemplate restTemplate = null;
        try {
            TrustStrategy acceptingTrustStrategy = (chain, authType) -> true;
            SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);

            HttpClientBuilder clientBuilder = HttpClients.custom();

            CloseableHttpClient httpClient = clientBuilder.setSSLSocketFactory(sslsf).build();

            HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
            httpRequestFactory.setConnectionRequestTimeout(30000);
            httpRequestFactory.setConnectTimeout(30000);
            httpRequestFactory.setReadTimeout(30000);

            httpRequestFactory.setHttpClient(httpClient);

            restTemplate = new RestTemplate(httpRequestFactory);
            //解决乱码
            List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
            httpMessageConverters.stream().forEach(httpMessageConverter ->{
                if(httpMessageConverter instanceof StringHttpMessageConverter){
                    StringHttpMessageConverter messageConverter = (StringHttpMessageConverter)httpMessageConverter;
                    messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
        return restTemplate;
    }

模板一

private <R> R forwardGetRest(String url, Class<R> clazz) {
        Assert.notNull(HTTP_HEADERS, "请设置 http headers");
        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(HTTP_HEADERS);
        RestTemplate restTemplate = restTemplateHttps();
        HTTP_HEADERS.remove("postman-token");
        HTTP_HEADERS.remove("host");
        final ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
        final String body = response.getBody();
        if (clazz == String.class) {
            return (R) body;
        }
        final R t;
        try {
            t = JSON.parseObject(body, clazz);
            if (t == null) {
                System.out.println(url);
            }
        } catch (JSONException e) {
        }
        return t;
    }

模板二

private <T> T forward(String cookie, String url, HttpMethod method, Class<T> clazz) {
        try {
            // RestTemplate restTemplate = new RestTemplate();
            RestTemplate restTemplate = restTemplateHttps();
            HttpHeaders httpHeaders = new HttpHeaders();
            // httpHeaders.add("Cookie", cookie);
            // httpHeaders.add("x-requested-with", "XMLHttpRequest");
            setHeader(cookie, httpHeaders);
            HttpEntity<T> requestEntity = new HttpEntity<>(null, httpHeaders);
            final ResponseEntity<T> exchange = restTemplate.exchange(url, method, requestEntity, clazz,
                    new HashMap<>());
            return exchange.getBody();
        } catch (Exception e) {
            return null;
        }
    }
posted @ 2025-02-28 10:27  懒惰的星期六  阅读(206)  评论(0)    收藏  举报