java restTemplate调用三方接口,三方ssl证书过期,跳过校验

当使用RestTemplate调用三方服务时,如果遇到证书过期的问题,可以通过配置自定义的SSLContext和TrustStrategy来跳过证书校验。在启动类中注入RestTemplate的Bean,设置SSLConnectionSocketFactory并启用NoopHostnameVerifier,从而实现不验证证书的HTTP请求。这种方法在证书出现问题时可以临时解决调用问题,但并不推荐用于生产环境。
部署运行你感兴趣的模型镜像

使用  restTemplate 调用三方 三方证书过期,跳过证书校验

事例代码:

/**
     * post请求
     */
    public <T> T getRestTemplate(Object json, String url, Class<T> tClass) {
        log.info("开始调用远程服务");
        log.info("url:{}", url);
        log.info("json:{}", json);
        log.info("[对接]开始");
        String date = DateUtil.format(new Date(), DateUtil.DATE_TIME);
        log.info("[对接]时间:{}", date);
        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        headers.setContentType(type);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers);
        T body = restTemplate.postForEntity(url, formEntity, tClass).getBody();
        log.info("[对接接口返回],json:{}", body);
        return body;
    }

如上代码,三方证书过期会报错 解决如下

启动类中 注入bean 跳过校验就好了

 @Bean
    RestTemplate restTemplate() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
        TrustStrategy acceptingTrustStrategy = (cert, authType) -> true;
        SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);

        Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
                .register("https", sslsf).register("http", new PlainConnectionSocketFactory()).build();
        BasicHttpClientConnectionManager connectionManager = new BasicHttpClientConnectionManager(
                socketFactoryRegistry);
        CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf)
                .setConnectionManager(connectionManager).build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
        requestFactory.setConnectTimeout(10000);
        requestFactory.setReadTimeout(10000);
        return new RestTemplate(requestFactory);
    }

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C__jx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值