当前位置:首页 > iOS开发专区 > 正文内容

在线文件转Base64及解决地址为https

7年前 (2018-06-02)iOS开发专区3683

[code]

   /**
     * 获取在线图片/音频BASE64格式
     *
     * @param filePath 图片/音频路径
     * @return 图片base64位
     */
    public String base64File(String filePath) {
        String str = "";
        try {
            URL url = new URL(filePath);
            //SSL请求地址
            trustAllHttpsCertificates();
            HttpsURLConnection.setDefaultHostnameVerifier(hv);


            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            DataInputStream in = new DataInputStream(conn.getInputStream());
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024 * 4];
            int n = 0;
            while ((n = in.read(buffer)) != -1) {
                out.write(buffer, 0, n);
            }
            byte[] data = out.toByteArray();
            BASE64Encoder encoder = new BASE64Encoder();
            str = encoder.encode(data);
            str = str.replaceAll("\r|\n", "");
        } catch (Exception e) {
            throw new ValidatorException(StatusCodeEnum.UNKNOW, "媒体资源获取失败!");
        }
        return str;
    }


    /**
     * 兼容SSL地址请求
     */
    HostnameVerifier hv = new HostnameVerifier() {
        @Override
        public boolean verify(String urlHostName, SSLSession session) {
            System.out.println("Warning: URL Host: " + urlHostName + " vs. "
                    + session.getPeerHost());
            return true;
        }
    };


    private static void trustAllHttpsCertificates() throws Exception {
        javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
        javax.net.ssl.TrustManager tm = new SllManager();
        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 SllManager 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;
        }
    }
[/code]


扫描二维码推送至手机访问。

版权声明:本文由 果签工坊 发布,如需转载请注明出处。

本文链接:https://applep12.vip/programming/WRSpdTMBiqtn60Z.html

分享给朋友:

相关文章

直接操作Window对象进行 打印 保存等操作

打印代码:<SCRIPT language="JavaScript">       function printdiv() {  ...

js直接操作access数据库

<html>    <head><titel>jstest</title></head>    &l...

tomcat 虚拟内存配置(含安装版、解压版)

1.适用于解压版Tomcatwindows 下 tomcat 虚拟内存配置      在tomcat的bin目录下,找到catalina.bat 文件,打开,在最上面添加这样一句:...

初学extjs 了解的一些基本属性

1.  Ext.Msg.alert("角色管理信息提示", "角色权限保存成功!");2.  store.baseParams.jsonString = jso...

关于extjs组件中的内存泄露问题

所有component的子类都自动的参与标准的ext组件的生命周期:创建,渲染,销毁,这些操作由Container类提供。在创建容器时,组件可以通过item配置选项添加到容器中,或者可以add方法动态地添加。所有组件都注册到了ext.com...

Struts、Spring、Hibernate方向面试题

Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭Se...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。