当前位置: 首页 > news >正文

Https图片链接下载问题

1. 获取方法

入参是一个Url, 和一个随机的名称. 返回值是MultipartFile, 这里因为我这里需要调接口传到服务器, 这里也可以直接通过inputStream进行操作. 按需修改

 /*** 通过Url获取文件** @param url* @param fileName 随机产生一个文件名, 可以是uuid等* @return* @throws Exception*/public static MultipartFile doGetForHttpsUrl(String url, String fileName) throws Exception {CloseableHttpClient httpClient = getPassSSLCloseableHttpClient();InputStream inputStream = null;try {HttpGet httpGet = new HttpGet(url);// 第二个参数是user-agent 可以在网页的检查中看到httpGet.setHeader("User-Agent", getOneUserAgent());CloseableHttpResponse response = httpClient.execute(httpGet);if (response != null && response.getStatusLine().getStatusCode() == 200) {HttpEntity entity = response.getEntity();if (entity != null) {inputStream = entity.getContent();MultipartFile multipartFile = toMultipartFile(inputStream, fileName + ".png");response.close();return multipartFile;}}} finally {if (httpClient != null) {httpClient.close();}if (inputStream != null) {inputStream.close();}}return null;}/*** 将InputStream转换成MultipartFile* 这里是因为需求需要,所以转为了一下具体的根据实际情况返回需要的值* @param inputStream 输入流* @param fileName    文件名* @return*/public static MultipartFile toMultipartFile(InputStream inputStream, String fileName) throws IOException {File tempFile = File.createTempFile("multipart-file", ".tmp");FileUtils.copyInputStreamToFile(inputStream, tempFile);byte[] bytes = IOUtils.toByteArray(new FileInputStream(tempFile));return new MockMultipartFile(tempFile.getName(), fileName, "image/jpeg", bytes);}
2. 信任所有的整数解决证书问题
    /*** 信任所有的证书** @return* @throws NoSuchAlgorithmException* @throws KeyManagementException*/private static CloseableHttpClient getPassSSLCloseableHttpClient() throws NoSuchAlgorithmException, KeyManagementException {// 创建信任所有证书的 TrustManagerTrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() {return null;}public void checkClientTrusted(X509Certificate[] certs, String authType) {}public void checkServerTrusted(X509Certificate[] certs, String authType) {}}};// 获取 SSL 上下文SSLContext sc = SSLContext.getInstance("SSL");sc.init(null, trustAllCerts, new java.security.SecureRandom());// 将默认的 SSLSocketFactory 和 HostnameVerifier 替换为信任所有证书的版本return HttpClients.custom().setSSLContext(sc).setSSLHostnameVerifier(new NoopHostnameVerifier()).build();}

获取userAgent的方法在 Https接口调用问题的最后一个title有需要的话可以看一下

http://www.lryc.cn/news/263553.html

相关文章:

  • Wireshark在移动网络中的应用
  • Leetcode 1901. 寻找峰值 II(Java + 列最大值 + 二分)
  • RabbitMQ 消息持久化
  • Opencv实验合集——实验四:图片融合
  • Java复习
  • 腾讯云微服务11月产品月报 | TSE 云原生 API 网关支持 WAF 对象接入
  • 性能优化-待处理
  • Linux: sysctl: network: ip_no_pmtu_disc,容易搞混的参数名称
  • 关于“Python”的核心知识点整理大全26
  • Axure中继器完成表格的增删改查的自定义元件(三列表格与十列表格)
  • 刚clone下来的项目如何上传到新的仓库
  • 面试题总结(十五)【ARMstm32】【华清远见西安中心】
  • 助听器概述
  • 学习k8s
  • iOS 将sdk更新到最新并为未添加版本号的三方库增加版本号
  • Appium —— 初识移动APP自动化测试框架Appium
  • 自助式可视化开发,ETLCloud的集成之路
  • diffu-Distributed inference with multiple GPUs
  • 在Python中使用Kafka帮助我们处理数据
  • 进程和线程和协程区别
  • 银行测试:第三方支付平台业务流,功能/性能/安全测试方法
  • 神经网络可以计算任何函数的可视化证明
  • SQL进阶理论篇(十三):数据库的查询优化器是什么?
  • 视觉SLAM中的相机分类及用途
  • Gin之GORM多表关联查询(多对多;自定义预加载SQL)
  • linux 调试工具 GDB 使用
  • qt程序在Linux下打包的一般流程
  • 华为鸿蒙应用--欢迎页SplashPage+倒计时跳过(自适应手机和平板)-ArkTs
  • spring MVC概述和土门案例(无配置文件开发)
  • 持续集成交付CICD:K8S 通过模板文件自动化完成前端项目应用发布