cordova File transfer https如何才能成功

记录一下用cordova-plugin-file-transfer 和 https来传输文件

1. 如果目标网址https://website.com/拥有证书,应该不成问题

2. 目标地址有自签名证书:

app/java/org/apache/cordova/filetransfer/FileTransfer.java,添加如下代码:

static {
        try {
            trustAllHttpsCertificates();
            HttpsURLConnection.setDefaultHostnameVerifier
                    (
                            (urlHostName, session) -> true
                    );
        } catch (Exception e) {
        }
    }
    private static void trustAllHttpsCertificates() {
        try {
            TrustAllManager[] trustAllCerts = new TrustAllManager[1];
            trustAllCerts[0] = new TrustAllManager();
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, null);
            HttpsURLConnection.setDefaultSSLSocketFactory(
                    sc.getSocketFactory());
        }
        catch (Exception e) {}
    }

    private static class TrustAllManager implements X509TrustManager {
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        public void checkServerTrusted(X509Certificate[] certs,
                                       String authType) {
        }

        public void checkClientTrusted(X509Certificate[] certs,
                                       String authType) {
        }
    }

 

前端JS:这部分http以及https并没有区别

let options = new FileUploadOptions()
options.fileKey = 'file'
options.fileName = 'myimg.jpg'
options.chunkedMode = false
// options.mimeType = "text/plain";

var headers = {'Authorization': ' ' + this.token}
options.headers = headers
let ft = new FileTransfer()
// 上传地址
let success = (res) => {
	alert('文件上传成功')
}
let failure = (err) => {
	console.info(err)
	alert('文件上传失败')
}
let url = 'youuploadurl'
ft.upload(fileUrl, encodeURI(url), success, failure, options, true)

 


版权声明:本文为butyesbutno原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。