首页 > 其他分享 >jdk1.7设置URLConnection的TLS

jdk1.7设置URLConnection的TLS

时间:2024-04-10 13:24:24浏览次数:28  
标签:TLS URLConnection String imageUrl jdk1.7 inputStream IOException File throws

jdk1.7无法下载https的图片,需要修改下代码。兼容TLSv1.2。

/**
*
* @param imageUrl
* @return
* @throws IOException
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public static File downloadImageToTempFile(String imageUrl) throws IOException, NoSuchAlgorithmException, KeyManagementException {
// 创建一个临时文件
File tempFile = File.createTempFile("image", ".jpg");
//tempFile.deleteOnExit(); // 确保在程序退出时删除临时文件

// 打开 URL 连接
URL url = new URL(imageUrl);
InputStream inputStream;
if (imageUrl.startsWith("https")) {
SSLContext sc = SSLContext.getInstance("TLSv1.2"); //$NON-NLS-1$
sc.init(null, null, null);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(sc.getSocketFactory());
inputStream = connection.getInputStream();
}else {
URLConnection urlConnection = url.openConnection();
inputStream = urlConnection.getInputStream();
}


// 写入临时文件
FileOutputStream outputStream = new FileOutputStream(tempFile);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}

// 关闭流
outputStream.close();
inputStream.close();

// 返回临时文件
return tempFile;
}

// 测试main方法

public static void main(String[] args) throws IOException {

String imageUrl = "https://oss.ta.com/m/029388.jpg";
String  imageUrl2 = "http://192.168.1.111:9000/BJTL-044%20(1).jpg";
try {
File tempFilePath = HttpUtils.downloadImageToTempFile(imageUrl);
System.out.println("Image downloaded to temporary file: " + tempFilePath);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Failed to download image.");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
}

标签:TLS,URLConnection,String,imageUrl,jdk1.7,inputStream,IOException,File,throws
From: https://www.cnblogs.com/mingyangli/p/18125695

相关文章

  • 如何用加密技术守护你的数字世界(9):SSL/TLS
    该文章Github地址:https://github.com/AntonyCheng/encryption-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况......
  • 【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection
    ......
  • ios 之 netty版本swiftNio(TLSHandler 创建)
    SwiftNio简介用于高性能协议服务器和客户端的事件驱动、无阻塞的网络应用程序框架。SwiftNIO是一个跨平台异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这就像Netty,但是为Swift写的。Xcode引入swiftNio        在实际写代码前,......
  • 劫持TLS绕过canary pwn89
    劫持TLS绕过canarypwn88首先了解一下这个东西的前提条件和原理前提:溢出字节够大,通常至少一个page(4K)创建一个线程,在线程内栈溢出原理:在开启canary的情况下,当程序在创建线程的时候,会创建一个TLS(ThreadLocalStorage),这个TLS会存储canary的值,而TLS会保存在stack高地址......
  • 请求被中止: 未能创建 SSL/TLS 安全通道”的原因及解决办法
    4个解决办法,我用的第四个方法就解决了,注册表手动添加的重启后不管用,第四个方法直接用程序改一下方便 首先得保证服务器是否支持tls1.2去注册表里查或者百度怎么查,基本大多数都用的是1.2      1.  代码前加这个 ServicePointManager.Expect100Continu......
  • zhipuai的GLM-4模型API访问出现错误: ConnectError: TLS/SSL connection has been clo
    1简介访问zhipuai的GLM-4模型的API时,挂上梯子后访问失败,显示ConnectError:TLS/SSLconnectionhasbeenclosed(EOF)(_ssl.c:1131)报错信息如下{ "name":"ConnectError", "message":"TLS/SSLconnectionhasbeenclosed(EOF)(_ssl.c:1131)",......
  • HashMap线程不安全实例(jdk1.7)
    一、前言jdk1.7中,以put()方法举例,线程不安全的一些情况:1,初始化HashMap的桶数组的时候,一个线程初始化了桶数组并插入了第一个元素,但是另一个线程不知道初始化好了,也执行了初始化的操作,清除了前面线程已经插入的元素;2,两个线程同时触发扩容,在翻转同个桶位上的链表时,链表形成环,类似......
  • Data encapsulation of HTTP, TLS, TCP and IP
    数据包封装过程 原文:TLSrecordsizehasanimportantimpactontheperformanceofHTTPS.Herewediscusstheeffectofrecordsizeondataencapsulation,asshowninFigure2.TCPisabyte-streamprotocol,whichcansplitmessagefromtheupperlayerofT......
  • Centos 上python3 pip3安装报错:WARNING: pip is configured with locations that requ
    pip3安装报错:WARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.在网上查一下原因是openssl版本不兼容导致,centos默认带的openssl版本太低,要升级openssl版本。openssl  下载地址:https://www.openssl.org/s......
  • TLS数据包重组
    TLS解密参考以下链接:Wireshark解密TLS报文_在线tls解密-CSDN博客总结:配置环境变量wireshark首选项配置 TLS解密例子Frame2700 Frame2714 分析:Frame2700tcp共分8个segment,Frame2700大小是800bytes,Frame2700大小总大小是1360,Frame2700中剩余的560是下一......