忽略restTemplast发送请求提示SSL证书问题

该代码段展示了如何创建一个Spring的RestTemplate实例,同时配置它以接受所有SSL证书,用于不验证主机名的HTTPS请求。它涉及到ApacheHttpClient的相关配置,包括自定义的TrustStrategy和SSLConnectionSocketFactory。
摘要由CSDN通过智能技术生成
import com.alibaba.fastjson.JSONObject;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.ssl.TrustStrategy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
import org.springframework.web.client.RestTemplate;

import javax.net.ssl.SSLContext;
import java.io.UnsupportedEncodingException;
@Component
public class RestTemplateConfig {
        
        @Bean("restTemplate")
        public RestTemplate restTemplate() {
            try{
                RestTemplate restTemplate = new                         RestTemplate(RestTemplateConfig.generateHttpRequestFactory());
                return restTemplate;
            }catch (Exception e){
                logger.error(e.getMessage());
                throw new RuntimeException("unSSLRestTemplate bean创建失败,原因为:" + e.getMessage());
            }
        }
        private static HttpComponentsClientHttpRequestFactory                 generateHttpRequestFactory() throws Exception{
            TrustStrategy acceptingTrustStrategy = ((x509Certificates, authType) -> true);
            SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null,                 acceptingTrustStrategy).build();
            SSLConnectionSocketFactory connectionSocketFactory = new                 SSLConnectionSocketFactory(sslContext, new                 NoopHostnameVerifier());

            HttpClientBuilder httpClientBuilder = HttpClients.custom();
            httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);
            CloseableHttpClient httpClient = httpClientBuilder.build();
            HttpComponentsClientHttpRequestFactory factory = new                 HttpComponentsClientHttpRequestFactory();
            factory.setHttpClient(httpClient);
            return factory;
        }

}

                

        

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值