• java访问https链接下载图片


    java访问https链接下载图片

    一、通过maven引入https工具包

    <dependency>
          <groupId>org.apache.httpcomponentsgroupId>
          <artifactId>httpclientartifactId>
          <version>4.5.13version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、https链接下载文件工具类

    package com.mhx.info.service;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.ssl.SSLContexts;
    import org.junit.Test;
    
    import java.io.FileOutputStream;
    import java.io.InputStream;
    
    
    /**
     * @Description: https文件链接下载文件
     * @BelongsProject: mhxFileDownload
     * @BelongsPackage: com.mhx.info.service
     * @ClassName: BatchDownloadFile
     * @Author: MHX
     * @CreateTime: 2022/11/25
     */
    public class BatchDownloadFileTest {
    
        /**
         * https来获得
         *
         * @throws Exception 异常
         */
        @Test
        public void httpsToGet() throws Exception {
    //        文件下载存储路径
            String savePath = "D:/zhxcmfs/myFiles";
    //        文件命名
            String fileName = "图片.png";
    //        https文件下载链接
            String apiHttp = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Flmg.jj20.com%2Fup%2Fallimg%2F1114%2F040221103339%2F210402103339-8-1200.jpg&refer=http%3A%2F%2Flmg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1671956738&t=7369439221c4fff3114c8cbaa28b4330";
    //        忽略对服务器端证书的校验
            SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(),
                    NoopHostnameVerifier.INSTANCE);
            CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(scsf).build();
            HttpGet httpget = new HttpGet(apiHttp);
            HttpResponse response = client.execute(httpget);
            HttpEntity entity = response.getEntity();
            InputStream is = entity.getContent();
    //        对存储空间大小预定义
            int cache = 10 * 1024;
    //        文件输出路径
            FileOutputStream fileout = new FileOutputStream(savePath + "/" + fileName);
            byte[] buffer = new byte[cache];
            int ch = 0;
            while ((ch = is.read(buffer)) != -1) {
                fileout.write(buffer, 0, ch);
            }
            is.close();
            fileout.flush();
            fileout.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    三、https链接下载文件工具类讲解

    // 文件下载存储路径
    String savePath = “D:/zhxcmfs/myFiles”;
    // 文件命名
    String fileName = “图片.png”;
    // https文件下载链接
    String apiHttp = “https://gimg2.baidu.com/image_search/src=http%3A%2F%2Flmg.jj20.com%2Fup%2Fallimg%2F1114%2F040221103339%2F210402103339-8-1200.jpg&refer=http%3A%2F%2Flmg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1671956738&t=7369439221c4fff3114c8cbaa28b4330”;
    // 忽略对服务器端证书的校验
    SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(),
    NoopHostnameVerifier.INSTANCE);
    CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(scsf).build();
    HttpGet httpget = new HttpGet(apiHttp);
    HttpResponse response = client.execute(httpget);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    // 对存储空间大小预定义
    int cache = 10 * 1024;
    // 文件输出路径
    FileOutputStream fileout = new FileOutputStream(savePath + “/” + fileName);
    byte[] buffer = new byte[cache];
    int ch = 0;
    while ((ch = is.read(buffer)) != -1) {
    fileout.write(buffer, 0, ch);
    }
    is.close();
    fileout.flush();
    fileout.close();

  • 相关阅读:
    基于STM32L431的Liteos低功耗Runstop模式的实现
    2022牛客多校(四)
    86.(cesium篇)cesium叠加面接收阴影效果(gltf模型)
    接口压力测试 jmeter--增强篇(二)
    2023年11月中国数据库排行榜:OPO组合持续两月,亚信、中兴闯进前十
    总结:数组常用方法
    多标签用户画像分析跑得快的关键在哪里?
    Spring Security 构建基于 JWT 的登录认证
    如何根据波特率计算设备每秒传输多少字符
    R语言survminer包的ggsurvplot函数可视化生存曲线、conf.int参数指定添加生存置信区间、conf.int.style指定置信区间的形式
  • 原文地址:https://blog.csdn.net/m0_45081336/article/details/128040341