Http Download

Http / Https 下载文件,startWith不能验证https,测试地址:https://storage.googleapis.com/golang/go1.7.3.windows-amd64.msi

java 复制代码
private static final Logger logger = Logger.
		getLogger(MethodHandles.lookup().lookupClass());
	
	private static void sunNetSsl() {
		System.setProperty("java.protocol.handler.pkgs",
			"com.sun.net.ssl.internal.www.protocol");
		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
	}
	
	private static void javaxNetSsl(){
		TrustManager[] trustAllCertArr = new TrustManager[]{
			new X509TrustManager() {
				public X509Certificate[] getAcceptedIssuers() {
					return null;
				}
				public void checkServerTrusted(X509Certificate[] 
					certArr,String authType) throws CertificateException {}
				public void checkClientTrusted(X509Certificate[] 
					certArr,String authType) throws CertificateException {}
		}};
		//activate trust manager
		try {
			SSLContext sc = SSLContext.getInstance("SSL");
			sc.init(null,trustAllCertArr,new SecureRandom());
			HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
		} catch (NoSuchAlgorithmException | KeyManagementException e) {
			e.printStackTrace();
		}
	}
	
	public static void download(String downloadUrl,String fileName,boolean isHttps) throws IOException{
		if (isHttps) {
			logger.info(isHttps);
			javaxNetSsl();
			//sunNetSsl();
		}
		URL url = new URL(downloadUrl);
		try(ReadableByteChannel rbc = Channels.newChannel(url.openStream());
			FileOutputStream fos = new FileOutputStream(fileName)){
			fos.getChannel().transferFrom(rbc,0,Long.MAX_VALUE);
		}catch(IOException e){
			e.printStackTrace();
		}
	}
	
相关推荐
今天秃头了吗??15 小时前
【JAVA】网络编程
java·网络·网络编程·socket
is081516 小时前
NFS 服务器 使用
服务器·网络
又菜又爱玩呜呜呜~16 小时前
go使用反射获取http.Request参数到结构体
开发语言·http·golang
言之。17 小时前
TCP 拥塞控制设计空间课程要点总结
网络·网络协议·tcp/ip
Freed&17 小时前
《没有架构图?用 netstat、ss、tcpdump 还原服务连接与数据流向》
网络·测试工具·tcpdump
千钰v18 小时前
Tcpdump: The Basics Tcpdump 基础
linux·运维·网络·tcpdump·tryhackme
cellurw18 小时前
Linux下C语言实现HTTP+SQLite3电子元器件查询系统
linux·c语言·http
希望201718 小时前
Golang | http/server & Gin框架简述
http·golang·gin
跨境小新18 小时前
ChatGPT大模型训练指南:如何借助动态代理IP提高训练效率
网络协议·tcp/ip·chatgpt
全栈技术负责人18 小时前
前端网络性能优化实践:从 HTTP 请求到 HTTPS 与 HTTP/2 升级
前端·网络·http