2013-10-09 115 views
7

我使用LoopJ AndroidAsyncHttp下载图像,但是当我尝试使用HTTPS URL时,我没有得到任何回复。 代码:使用LoopJ下载来自https的图像资源AndroidAsyncHttp

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

如果您能告诉我们您尝试了什么,那将会很棒。你有没有试过重写失败或其他什么? – OrhanC1

+1

查看有关如何接受所​​有证书的示例:https://github.com/loopj/android-async-http/issues/288 –

+1

不是接受所有证书的最佳方式,如果您这样做,则无需使用HTTPS。你应该看看:http://stackoverflow.com/questions/12018681/android-tls-connection-and-self-signed-certificate –

回答

4

有几个开源的图书馆做异步图像加载。他们不仅负责下载,还包括缓存和多线程。总而言之,使用这些库比试图单独编写所有代码要方便得多。现在,它只是下载的图像,但在未来,你可能想缓存等

我建议你看一看picassovolley,毕加索更容易使用,但凌空拥有了更多的功能。

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

有点晚了,但你可以接受所有cerificates这样..

AsyncHttpClient client = new AsyncHttpClient(true, 80, 443); 

在你的日志,你会看到这个..

AsyncHttpClient:小心!使用修复程序是不安全的,因为它不验证SSL证书。