• [技术干货] 使用httpclient调用第三方接口返回javax.net.ssl.SSLHandshakeException异常
    1. 踩坑经历最近做了个需求,需要调用第三方接口获取数据,在联调时一直失败,代码抛出javax.net.ssl.SSLHandshakeException异常,具体错误信息如下所示:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target2.原因分析因为调用第三方接口的代码是复用项目中原有的工具类(基于httpclient封装),所以在确认完传参没问题后,第一时间排除了编码问题。然后开始怀疑第三方提供的接口地址(因为竟然是IP+端口访问),在和第三方确认没有域名访问后,在浏览器里输入第三方的接口地址,发现证书有问题:又使用Postman调用第三方接口,也是失败,提示自签名证书:通过以上分析,可以发现出现该问题的根本原因是Java客户端不信任目标服务器的SSL证书,比如这个第三方使用的自签名证书。3.解决方案解决方案一般有2种,第1种方案是将服务器证书导入Java信任库,第2种方案是绕过SSL验证,这里采用第2种方案。首先,新建HttpClient工具类: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.HttpClients; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; public class HttpClientUtils { public static CloseableHttpClient createIgnoreCertClient() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, new TrustManager[]{new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted(X509Certificate[] certs, String authType) { } }}, new java.security.SecureRandom()); SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE); return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build(); } }然后将原来声明httpClient的代码改为如下所示:CloseableHttpClient httpClient = HttpClientUtils.createIgnoreCertClient();注意事项:确保项目中引入了httpclient依赖:<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>转载自https://www.cnblogs.com/zwwhnly/p/18795523
  • [大赛资讯] 本地extra数据集正常交互,用时78秒,提交线上以后有时候是unexpected_eoln有时候是time_out
    这种情况是不是因为代码内部逻辑卡死,偶尔崩溃偶尔超时的原因呀?
  • [大赛资讯] 依然出现runtime_error问题
    在本地判题器跑没有问题,提交代码后就出现runtime_error问题,好难排bug
  • [大赛资讯] disk_head_action_error,请问这个报错一般是什么原因呢
    本地的三个样例都没问题
  • [大赛资讯] 样例代码预编译过不去
    我的代码在控制台手打样例可以正常跑,但本地编译卡在预编译,连ok都出不来,甚至用样例代码跑了也是这个问题
  • [问题求助] 【华为云cce 】怎么使用自建server实现k8s集群的的web-terminal
    建立websocket连接,进入到集群内部,通过下发自定义指令在集群内部执行
  • [大赛资讯] 【区域初赛赛题问题】 本地编译通过,提交后编译失败 compile_error
    本地正常运行,提交后报错编译错误 compile_error
  • [大赛资讯] 【区域初赛赛题问题】 本地编译通过,提交后编译失败
    本地可以正常运行,提交系统后报编译错误,能否帮忙排查~
  • [大赛资讯] 请问如何得知unexpected_elon出现的报错是内存超了还是程序超时了?
    请问如何得知unexpected_elon出现的报错是内存超了还是程序超时了?
  • [互动交流] 开始《Java智能助手设置》报错,不知道在哪设置
    命令"SmartAssist: Java智能助手设置"导致错误 (command 'java-smart-assist.settings.open' not found)
  • [大赛资讯] 咋改都是runtime_error, 做不了一点
    本地跑过数据不知道几次了,限制内存也能跑过,但是交上去就会 runtime_error。这是 debug 大赛吗 ?
  • [大赛资讯] 怎么该都是runtime_error
    为什么本地的两个数据都可以跑过,但是一交上去就runtime_error?
  • [技术干货] java的线程
    在 Java 中,线程是程序执行的最小单元。Java 提供了多线程编程的支持,允许你同时运行多个线程,从而提高程序的并发性和效率。每个线程都有自己的执行路径,可以独立执行任务。Java 中创建线程有两种主要方式:继承 Thread 类:通过继承 Thread 类并重写 run() 方法来定义线程的执行逻辑。实现 Runnable 接口:通过实现 Runnable 接口并将其传递给 Thread 类的构造函数来创建线程。实践示例1. 继承 Thread 类java复制class MyThread extends Thread { @Override public void run() { // 线程执行的代码 for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " - " + i); } }}public class ThreadExample { public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); // 启动线程 thread1.start(); thread2.start(); }}解释:MyThread 类继承了 Thread 类,并重写了 run() 方法。在 main 方法中,创建了两个 MyThread 对象 thread1 和 thread2,并调用 start() 方法启动线程。start() 方法会调用 run() 方法,线程开始执行。2. 实现 Runnable 接口java复制class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " - " + i); } }}public class RunnableExample { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread1 = new Thread(myRunnable); Thread thread2 = new Thread(myRunnable); // 启动线程 thread1.start(); thread2.start(); }}解释:MyRunnable 类实现了 Runnable 接口,并实现了 run() 方法。在 main 方法中,创建了一个 MyRunnable 对象 myRunnable,然后将其传递给 Thread 类的构造函数,创建了两个线程 thread1 和 thread2。调用 start() 方法启动线程。线程的生命周期线程的生命周期包括以下几个状态:新建(New):线程对象被创建,但尚未启动。就绪(Runnable):线程已经启动,等待 CPU 调度执行。运行(Running):线程正在执行 run() 方法中的代码。阻塞(Blocked):线程因为某些原因(如等待资源)暂时停止执行。终止(Terminated):线程执行完毕或异常退出。线程的常用方法start():启动线程,使其进入就绪状态。run():线程执行的主体方法。sleep(long millis):使当前线程暂停执行指定的毫秒数。join():等待该线程终止。interrupt():中断线程。isAlive():检查线程是否处于活动状态。线程同步在多线程环境中,可能会出现多个线程同时访问共享资源的情况,导致数据不一致的问题。Java 提供了同步机制来解决这个问题,常用的同步方式有:synchronized 关键字:用于修饰方法或代码块,确保同一时间只有一个线程执行该代码。Lock 接口:提供了更灵活的锁机制。总结Java 线程是实现并发编程的基础。通过继承 Thread 类或实现 Runnable 接口,你可以创建并启动线程。理解线程的生命周期和同步机制对于编写高效、安全的多线程程序至关重要
  • [大赛资讯] java提交后一直显示runtime_error
    在本地跑两个样例都能过不报错,但是提交上去就报错。
  • [互动交流] CodeArts IDE For Java什么时候更新
    CodeArts IDE For Java 什么时候才能更新下一个版本呢?现在已经停留在2.3.0很久了,现在如果只运行一个工程的话问题不大,只不过单元测试那里有点问题。但是我们公司是那种一个总的模块,然后下面一堆子模块来一起开发的,然后这些模块的最上级都是同一个父工程的。但是因为每个人的负责的模块不同,像我是负责几个模块开发的。但是我们是没有最上级模块的代码权限的。如果我要用这个IDE来进行开发的话,那么我要开很多个窗口,然后同时如果我是有引用另外模块的api的话,那么我要将那个模块用maven进行打包,然后我当前模块也要重新install才能用到那个模块api里面的内容。这样的话会大大的降低开发的效率。这种情况有没有办法解决的?我试过将这些模块都拉到同一个窗口里面,但是这样的话他就无法正确的识别我的工程了。
总条数:2292 到第
上滑加载中