Java读取外链图片忽略ssl验证转为base64

这篇具有很好参考价值的文章主要介绍了Java读取外链图片忽略ssl验证转为base64。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近在对接外部接口时遇到返回的图片所在的服务器全都没有ssl证书,导致在前端直接用img标签展示时图片开裂。于是转为通过后端获取,绕过ssl验证之后转为base64返回。记录一下代码段。文章来源地址https://www.toymoban.com/news/detail-618806.html

package com.sy.ai.common.utils;


import cn.hutool.core.codec.Base64Encoder;
import lombok.extern.slf4j.Slf4j;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
@Slf4j
public class ImageUtil {
    public static String imageUrlToBase64(String imgUrl){
        URL url = null;
        InputStream is = null;
        ByteArrayOutputStream outStream = null;
        HttpURLConnection httpUrl = null;
        try {
            // 忽略ssl
            trustAllHttpsCertificates();
            HostnameVerifier hv = new HostnameVerifier() {
                @Override
                public boolean verify(String s, SSLSession sslSession) {
                    return true;
                }
            };
            HttpsURLConnection.setDefaultHostnameVerifier(hv);

            url = new URL(imgUrl);
            httpUrl =(HttpURLConnection) url.openConnection();
            // 连接超时
            httpUrl.setConnectTimeout(10000);
            // 读取超时、服务器响应慢
            httpUrl.setReadTimeout(10000);
            httpUrl.connect();
            is = httpUrl.getInputStream();
            outStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while((len = is.read(buffer)) != -1){
                outStream.write(buffer,0, len);
            }
            return "data:image/png;base64," + encode(outStream.toByteArray());

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String encode(byte[] image) {
        return Base64Encoder.encode(image);
    }

    private static void trustAllHttpsCertificates() throws Exception {
        javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
        javax.net.ssl.TrustManager tm = new miTM();
        trustAllCerts[0] = tm;
        javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, null);
        javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    }

    static class miTM implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {
            return true;
        }

        public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {
            return true;
        }

        @Override
        public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
                throws java.security.cert.CertificateException {
            return;
        }

        @Override
        public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
                throws java.security.cert.CertificateException {
            return;
        }
    }
}

到了这里,关于Java读取外链图片忽略ssl验证转为base64的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图片转为base64格式的优缺点分析

    1. 优点 (1)网页中使用base64格式的图片时,不用再请求服务器调用图片资源,减少了服务器访问次数。 (2)base64编码的字符串,更适合不同平台、不同语言的传输; (3)算法是编码, 不是压缩, 编码后只会增加字节数,但是算法简单, 几乎不会影响效率,算法可逆, 解码很

    2024年02月05日
    浏览(49)
  • python+selenium 实现验证码由base64转为jpg/png格式,并识别验证码

    在使用python+selenium实现自动化登录时,遇到了关于验证码的一些问题,主要是验证码格式的转换和识别。我这里的验证码都是用的base64格式,我的思路是先将base64格式转化为jpg或者png格式,然后用ddddocr模型来识别图片内容。 总结: replace()不生效: replace返回的是一个新的值,

    2024年02月13日
    浏览(50)
  • uni-app 调用相机或相册图片并转为base64格式上传图片

    1、调用相机或相册上传图片 2、图片文件转base64 (1)下载插件 (2)页面引入插件 3、image-tools/index.js源码

    2024年02月11日
    浏览(57)
  • uni-app小程序-将后台返回的base64码转为图片时,图片没有显示出来

    在用uni-app开发小程序时,遇到一个问题:后台返回一长串码,前端这边需要将base64码进行转化为图片 2.1.获取后台返回的base64码 2.2.在页面需要的地方进行赋值: tips:在data中 定义imgurl 变量 ,记得把 .replace(/[rn]/g,\\\'\\\') 这句代码添加上,因为后台返回的会有换行空格之类的,

    2024年02月09日
    浏览(52)
  • 微信小程序选择本地图片、视频的最新方法chooseMedia,转为为base64上传到后端接口

    微信的api变动还是挺大的,之前选择图片的api wx.chooseImage 已被弃用,改为了 wx.chooseMedia ,本篇将介绍如何使用最新方法 wx.chooseMedia 进行选择图片上传并回显,以及转为为base64上传到后端接口 wxml wxss js 上传成功后,会返回一个数组,里面有图片的 本地临时路径 效果图: 有

    2023年04月20日
    浏览(56)
  • postman中如何显示返回的base64图片验证码

    后端返回的代码 将以上代码中上面的一个字符串(即带 data:image/jpeg;base64, )复制到 http://www.jsons.cn/img2base64 中然后点击 追加img标签 即可将base64字符串转为图片 postman 中通过base64转成图片呢? postman 请求中返回的是base64字符串 然后在 Tests 中输入如下代码然后在直接查看即可

    2024年02月12日
    浏览(40)
  • postman获取验证码图片(base64字符串格式)

    在 Tests 里编写脚本 然后,在响应体的 Visualize 里查看

    2024年02月12日
    浏览(57)
  • java base64转图片

    方法 : 传入文件路径和base64位的编码 main方法 结果

    2024年02月13日
    浏览(33)
  • Java 实现图片转base64

    2024年02月09日
    浏览(43)
  • Java - 将base64编码解码成图片

    为了方便测试,我们可以使用一个图片编码网站,将图片进行base64编码 解密的代码如下 因为图片的Base64字符串非常大,动辄几百K,所以不能直接使用 String base64 = \\\"${该图片的base64串}\\\" 进行测试,否则编译器会报错 Java \\\"constant string too long\\\" compile error\\\" 。这个错误的出现,是因

    2023年04月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包