Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我使用Downloader.java代码下载基本url';s代码_Java_Android_Pdf_Download_Certificate - Fatal编程技术网

我使用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的站点下载,该站点具有无效证书(很可能是自签名的)。是的,但使用库和我在资产文件夹中获得的证书,我成功连接到该站点,但下载失败。