简体   繁体   English

如何从Android Phonegap应用程序中的https URI下载文件?

[英]How can I download files from an https URI in android phonegap application?

how to download files with https protocol in android ? 如何在Android中使用https协议下载文件? I'm try to use it, but keep getting an error. 我正在尝试使用它,但是会不断出现错误。

My download code: 我的下载代码:

var fileTransfer = new FileTransfer();
          fileTransfer.download(
                task_url,
                fileListDir + fileName,
            function(entry) {
                mylog("download complete: " + entry.fullPath);
            },
            function(error) {
                mylog("download error source " + error.source);
                mylog("download error target " + error.target);
                mylog("upload error code" + error.code);
            });

My log 我的日志

11-19 13:56:13.339: E/FileTransfer(17969): {"target":"/mnt/sdcard/task1/Picture_4.jpg","source":"https://91.228.199.95/ksiywFac63f2hs/fotos.gleb/Picture_4.jpg","code":3} 11-19 13:56:13.339: E/FileTransfer(17969): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 11-19 13:56:13.339:E / FileTransfer(17969):{“ target”:“ /mnt/sdcard/task1/Picture_4.jpg”,“ source”:“ https://91.228.199.95/ksiywFac63f2hs/fotos .gleb / Picture_4.jpg“,”代码“:3} 11-19 13:56:13.339:E / FileTransfer(17969):javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:证书的信任锚找不到路径。 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:477) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.setupSecureSocket(HttpConnection.java:185) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:433) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:378) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205) 11-19 13:56:13. 11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:477)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony .luni.internal.net.www.protocol.http.HttpConnection.setupSecureSocket(HttpConnection.java:185)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.luni.internal。 net.www.protocol.https.HttpsURLConnectionImpl $ HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:433)11-19 13:56:13.339:E / FileTransfer(17969):at org.apache.harmony.luni.internal.net.www .protocol.https.HttpsURLConnectionImpl $ HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:378)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.luni.internal.net.www.protocol。 http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)11-19 13:56:13。 339: E/FileTransfer(17969): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:152) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.cordova.FileTransfer.download(FileTransfer.java:486) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.cordova.FileTransfer.execute(FileTransfer.java:88) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.cordova.api.PluginManager$1.run(PluginManager.java:231) 11-19 13:56:13.339: E/FileTransfer(17969): at java.lang.Thread.run(Thread.java:1019) 11-19 13:56:13.339: E/FileTransfer(17969): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 339:E / FileTransfer(17969):位于org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:152)11-19 13:56:13.339:E / FileTransfer (17969):位于org.apache.cordova.FileTransfer.download(FileTransfer.java:486)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.cordova.FileTransfer.execute(FileTransfer。 java:88)11-19 13:56:13.339:E / FileTransfer(17969):at org.apache.cordova.api.PluginManager $ 1.run(PluginManager.java:231)11-19 13:56:13.339:E / FileTransfer(17969):java.lang.Thread.run(Thread.java:1019)11-19 13:56:13.339:E / FileTransfer(17969):原因:java.security.cert.CertificateException:java。 security.cert.CertPathValidatorException:找不到证书路径的信任锚。 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:161) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:664) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474) 11-19 13:56:13.339: E/FileTransfer(17969): ... 10 more 11-19 13:56:13.339: E/FileTransfer(17969): Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:161)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:664)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony .xnet.provider.jsse.NativeCrypto.SSL_do_handshake(本地方法)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java :474)11-19 13:56:13.339:E / FileTransfer(17969):... 10更多11-19 13:56:13.339:E / FileTransfer(17969):由以下原因引起:java.security.cert.CertPathValidatorException :找不到证书路径的信任锚。 11-19 13:56:13.339: E/FileTransfer(17969): at org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:207) 11-19 13:56:13.339: E/FileTransfer(17969): at java.security.cert.CertPathValidator.validate(CertPathValidator.java:197) 11-19 13:56:13.339: E/FileTransfer(17969): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:156) 11-19 13:56:13.339: E/FileTransfer(17969): ... 13 more 11-19 13:56:13.339:E / FileTransfer(17969):位于org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:207)11-19 13:56:13.339:E / FileTransfer(17969) :位于java.security.cert.CertPathValidator.validate(CertPathValidator.java:197)11-19 13:56:13.339:E / FileTransfer(17969):位于org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted (TrustManagerImpl.java:156)11-19 13:56:13.339:E / FileTransfer(17969):...还有13个

Answer is change old cordova to cordova 2.2.0 and write in the code true, some this 答案是将旧的cordova更改为cordova 2.2.0并在代码中写入true,其中一些

var fileTransfer = new FileTransfer();
      fileTransfer.download(
            task_url,
            fileListDir + fileName,
        function(entry) {
            mylog("download complete: " + entry.fullPath);
        },
        function(error) {
            mylog("download error source " + error.source);
            mylog("download error target " + error.target);
            mylog("upload error code" + error.code);
        }, true);

And this is work!!! 这就是工作!!! Thanks Simon Mac Donald!! 谢谢西蒙·麦克唐纳德!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM