使用HttpsURLConnection请求https报错

**背景:**公司需要在搭建的生产应用系统中上传图片文件后,自动调用公司打印机打印,但是生产环境的是外网是无法调用公司内网打印机的,但可以将打印机上云,暂时没有这样子做,所以使用了其他方法,写个jar包持续定时调用外网生产应用系统的https接口请求将图片下载到本地,再调用公司打印机打印。在调用https请求出现异常。

**原因:**使用Java原生HttpsURLConnection去请求https是会缺少证书无法请求成功的,但是请求http可以请求成功。

**解决:**在HttpsURLConnection之前添加以下代码:

java 复制代码
TrustManager[] trustAllCerts = new TrustManager[] {
                new X509TrustManager() {
                    public void checkClientTrusted(X509Certificate[] chain, String authType) {}
                    public void checkServerTrusted(X509Certificate[] chain, String authType) {}
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[0];
                    }
                }
        };
       
// 使用信任管理器创建SSL上下文
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

// 以上代码需要在HttpsURLConnection之前添加

//定义一个URL对象,就是你想下载的图片的URL地址
URL url = new URL(fileUrl);
//打开连接
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
//设置请求方式为"GET"
conn.setRequestMethod("GET");
//超时响应时间为10秒
conn.setConnectTimeout(10 * 1000);
//通过输入流获取图片数据
InputStream is = conn.getInputStream();
//得到图片的二进制数据,以二进制封装得到数据,具有通用性
byte[] data = readInputStream(is);
//创建一个文件对象用来保存图片,默认保存当前工程根目录,起名叫Copy.jpg
long timestamp = new Date().getTime();
File imageFile = new File(DOWNLOAD_FILE + timestamp + ".jpg");
System.out.println("本地下载了文件, file" + imageFile.getName());
//创建输出流
FileOutputStream outStream = new FileOutputStream(imageFile);
//写入数据
outStream.write(data);
//关闭输出流,释放资源
outStream.close();
return imageFile;
相关推荐
ESDWAN3 小时前
海外系统偶尔打不开,怎么区分 DNS 异常与网络连接故障?
tcp/ip·https
昂好的day4 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
2501_915921438 小时前
iOS应用耗电测试:使用Energy Log、Keymob和Instruments进行性能监控与能源消耗分析
android·ios·小程序·https·uni-app·iphone·webview
盛世宏博智慧档案8 小时前
算力机房多协议融合:Modbus TCP 温湿度变送器与 SNMP 设备混合组网方案
网络·网络协议·tcp/ip·传感器·温湿度
严谨的麻辣烫9 小时前
静态代理 IP 的出口一致性如何验证?Python 请求检测与异常排查
开发语言·python·http·网络安全
川石课堂软件测试10 小时前
涨薪技术|0到1学会性能测试第9课-HTTP响应统计
数据库·功能测试·网络协议·http·kubernetes·单元测试·测试用例
可信时间戳11 小时前
原创作品怎么申请版权?草稿、定稿、已发布、已授权,四个阶段四个做法
网络协议·http·https
话梅姐姐呀11 小时前
TCP/IP 架构各层的协议概述
人工智能·物联网·网络协议·tcp/ip·iot
余槐i12 小时前
加了Cookie yt-dlp仍报HTTP 403:3个容易漏的请求头差异
python·http·ffmpeg·开发工具·yt-dlp
husterlichf12 小时前
网关、掩码、子网、vlan、交换机
网络·网络协议