我使用Downloader.java代码下载基本url';s代码
使用此代码: 这个图书馆: 基于此: 我的最终代码是:我使用Downloader.java代码下载基本url';s代码,java,android,pdf,download,certificate,Java,Android,Pdf,Download,Certificate,使用此代码: 这个图书馆: 基于此: 我的最终代码是: package com.androidman.pc02.mywebviewapp; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.support.v4.content.LocalBroadcastMan
package com.androidman.pc02.mywebviewapp;
import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
import android.os.Environment;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import com.commonsware.cwac.security.trust.TrustManagerBuilder;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
public class Downloader extends IntentService {
public static final String ACTION_COMPLETE=
"com.commonsware.android.downloader.action.COMPLETE";
public Downloader() {
super("Downloader");
}
@Override
public void onHandleIntent(Intent i) {
try {
File root=
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
root.mkdirs();
File output=new File(root, i.getData().getLastPathSegment());
if (output.exists()) {
output.delete();
}
//---
HttpsURLConnection conn=null;
Context mcontext= MySuperAppApplication.getContext();
TrustManagerBuilder tmm=new TrustManagerBuilder(mcontext)
.allowCA("fdesmie.cer")
.or()
.useDefault();
SSLContext ssl=SSLContext.getInstance("TLS");
ssl.init(null, tmm.buildArray(), null);
//conn=(HttpsURLConnection)new URL(mUri).openConnection();
URL url=new URL(i.getData().toString());
conn =
(HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(ssl.getSocketFactory());
//HttpURLConnection c=(HttpURLConnection)url.openConnection();
FileOutputStream fos=new FileOutputStream(output.getPath());
BufferedOutputStream out=new BufferedOutputStream(fos);
try {
InputStream in=conn.getInputStream();
byte[] buffer=new byte[8192];
int len=0;
while ((len=in.read(buffer)) >= 0) {
out.write(buffer, 0, len);
}
out.flush();
}
finally {
fos.getFD().sync();
out.close();
conn.disconnect();
}
Log.d(getClass().getName(), "Exception in download") ;
LocalBroadcastManager.getInstance(this)
.sendBroadcast(new Intent(ACTION_COMPLETE));
}
catch (IOException e2) {
Log.e(getClass().getName(), "Exception in download", e2);
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
}
}
当我点击https站点的链接时,下载的文件是该站点的基本url的HTML内容。该站点使用不受信任的(“NET::ERR\u CERT\u AUTHORITY\u INVALID”)证书。
有人知道问题出在哪里吗?
谢谢您试图从启用SSL的站点下载,该站点具有无效证书(很可能是自签名的)。是的,但使用库和我在资产文件夹中获得的证书,我成功连接到该站点,但下载失败。