java - HTTPS下载文件报错android 4.4

标签 java android ssl https

我有这样一个问题,下面的小代码图像下载器,其中 params[0]- url 和 params[2] - 文件名,这个设计在 Android 5.0+ 上运行良好,但在旧版本上,我得到一个错误:

-javax.net.ssl.SSLException: Connection closed by peer

@Override
protected Bitmap doInBackground(String... params) {
    Bitmap bitmap = null;
    InputStream is = null;

    try {
        is = new URL(params[0]).openStream();

    } catch (IOException e) {
        e.printStackTrace(); // Exception there
    }
    bitmap = BitmapFactory.decodeStream(is);
    try {
        is.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    OutputStream outStream = null;
   File file = new File(Constans.DATA_APPLICATION_PATH+"/photo/"+params[1].replace("\"","").trim());

    try {
        // make a new bitmap from file
        outStream = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
        outStream.flush();
        outStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    file.deleteOnExit();
   return bitmap;
}

`

最佳答案

您的 SSL 授权有问题,如果您使用的是自签名证书,则肯定会出现此问题。

所以让android应用连接到URL的方法是跳过SSL验证(只有当我们确定连接时)

为此,您可以添加 this class并在 onCreate 方法中执行

new NukeSSLCerts().nuke();

它将通过信任所有证书来跳过证书验证。

关于java - HTTPS下载文件报错android 4.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479206/

相关文章:

java - 通过PendingIntent开放应用程序并直接进行语音识别

web-services - SSL 的非透明代理缓存

ssl - 始终选择 Nginx 默认服务器 - 多个 SSL 服务器

Java Eclipse 建议我将方法设为静态

java - hibernate查询组合3张表来获取一张表对应的对象

android - 如果 adb logcat 上的条件不起作用

ubuntu - 在启用压缩的情况下发送 Openssl 客户端问候

java - 安装 Drools Guvnor 时出错

java - 如何将 RollingFileAppender 更改为配置文件中设置的另一种?

android - 仅打开默认图库