使用LoopJ AndroidAsyncHttp从https下载图像资源

7

我正在使用LoopJ AndroidAsyncHttp下载图片,但是当我尝试用HTTPS URL时却没有响应。

代码:

AsyncHttpClient client = new AsyncHttpClient();
client.get(httpsUrlString, new BinaryHttpResponseHandler(allowedContentTypes) {
    @Override
    public void onSuccess(byte[] fileData) {
        Bitmap bitmap = BitmapFactory.decodeByteArray(fileData, 0, fileData.length);
        image.setImageBitmap(bitmap);
    }
});

1
如果您能告诉我们您尝试了什么就太好了。您是否尝试过覆盖onfailure或其他任何内容? - OrhanC1
1
请查看以下示例,了解如何接受所有证书:https://github.com/loopj/android-async-http/issues/288 - Juuso Ohtonen
1
不是接受所有证书的最佳方式,如果这样做,使用HTTPS就没有意义了。你应该看一下:https://dev59.com/m2ct5IYBdhLWcg3wjd6H - Adnan Mulla
使用HttpsURLConnection http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html - Himanshu Joshi
3个回答

4

有一些开源库可以进行异步图像加载。它们不仅负责下载,还包括缓存和多线程。

总的来说,使用这些库比尝试自己编写所有代码要方便得多。现在它只下载图像,但将来您可能需要缓存等功能。

我建议您看一下picassovolley,picasso更容易使用,但volley具有更多功能。


0
我希望这段代码能够解决你的问题。
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);

MySSLSocketFactory socketFactory = new MySSLSocketFactory(trustStore);
socketFactory.setHostnameVerifier(MySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

httpClient.setTimeout(30 * 1000);
httpClient.setSSLSocketFactory(socketFactory);

0
有点晚了,但你可以通过这种方式接受所有证书...
AsyncHttpClient client = new AsyncHttpClient(true, 80, 443);

在你的日志中,你会看到这个…… AsyncHttpClient:小心!使用该修复程序是不安全的,因为它不验证SSL证书。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接