java下载https的网络图片,添加安全证书方式

一、下载网址安全证书,导入证书

需要从所访问的https网址上下载一个安全证书,名字自定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

把下载好的安全证书导入到你本地安装的jdk里面(win10)

windows+x 快捷键,选择管理员运行 powershell

进入到自己的/jre/bin目录,我的是"C:\Program Files\Java\jdk1.8\jre\bin"

# 特别提示,路径加上双引号,因为Program Files带有空格,不加引号会报错
cd "C:\Program Files\Java\jdk1.8\jre\bin"

不加引号报错:
在这里插入图片描述
加上引号
在这里插入图片描述

执行导入命令

keytool -import -v -trustcacerts -alias my_cert -file F:\my_cert.cer -storepass changeit -keystore "C:\Program Files\Java\jdk1.8\jre\lib\security\cacerts"

解释说明:

  1. -alias hik_cert, hik_cert是可以自己修改的名称, -file F:\my_cert.cer 是上边导出的证书的位置,同样,这里的证书名字也是随便取的,但前提是保证将C:\Program Files\Java\jdk1.8\jre\lib\security\目录的cacerts文件内之前没有导入同名证书,就是要保证你将要导入的证书名称唯一性。
  2. changeit 是密码, java默认的。
  3. keytool是jdk中bin目录的一个exe文件,是jdk默认自带的,在我电脑的目录是:C:\Program Files\Java\jdk1.8\jre\bin\keytool.exe
  4. 其他保持不变。
  5. 如果提示:“是否信任此证书? [否]:” ,那么请输入"y"。
  6. 当出现:”证书已添加到密钥库中 [正在存储cacerts]“的时候,那么恭喜你已经添加成功。

二、java运行java程序下载图片

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

@Test
	public void download() {
		// 图片地址
		String strUrl = "https://**********";
		downloadImgByNet(strUrl, "F:\\", "222.png");
	}

/**
	 * 抓取网上的图片
	 *
	 * @param imgSrc
	 * @param filePath
	 */
	public static void downloadImgByNet(String imgSrc, String filePath, String fileName) {
		try {
			URL url = new URL(imgSrc);
			URLConnection conn = url.openConnection();
			//设置超时间为3秒
			conn.setConnectTimeout(3 * 1000);
			//防止屏蔽程序抓取而返回403错误
			conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
			//输出流
			InputStream str = conn.getInputStream();
			//控制流的大小为1k
			byte[] bs = new byte[1024];
			//读取到的长度
			int len = 0;
			//是否需要创建文件夹
			File saveDir = new File(filePath);
			if (!saveDir.exists()) {
				saveDir.mkdir();
			}
			File file = new File(saveDir + File.separator + fileName);
			//实例输出一个对象
			FileOutputStream out = new FileOutputStream(file);
			//循环判断,如果读取的个数b为空了,则is.read()方法返回-1,具体请参考InputStream的read();
			while ((len = str.read(bs)) != -1) {
				//将对象写入到对应的文件中
				out.write(bs, 0, len);
			}
			//刷新流
			out.flush();
			//关闭流
			out.close();
			str.close();
			System.out.println("下载成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值