2013-10-09 15 views
7

Używam pobierania obrazów LoopJ AndroidAsyncHttp, ale gdy próbuję używać adresów URL HTTPS, nie otrzymuję odpowiedzi. Kod:Dowloadowanie zasobów obrazów z https przy użyciu LoopJ 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

Byłoby wspaniale, gdybyś mógł powiedzieć nam, co próbujesz. Czy próbowałeś zastąpić onfailure lub cokolwiek innego? – OrhanC1

+1

Sprawdź przykład akceptowania wszystkich certyfikatów: https://github.com/loopj/android-async-http/issues/288 –

+1

Nie jest to najlepszy sposób akceptowania wszystkich certyfikatów, nie ma sensu posiadanie HTTPS, jeśli to zrobisz. Powinieneś rzucić okiem na: http://stackoverflow.com/questions/12018681/android-tls-connection-and-self-signed-certificate –

Odpowiedz

4

Istnieje kilka bibliotek open source, które robią asynchroniczne ładowanie obrazu. Nie tylko zajmują się pobieraniem, ale także buforowaniem i wielowątkowością.

W sumie korzystanie z tej biblioteki jest o wiele bardziej przydatne niż samodzielne pisanie całego tego kodu. Teraz to jest pobieranie tylko obraz, ale w przyszłości może chcesz buforowanie itp

Proponuję spojrzeć na picasso lub volley, picasso jest prostszy w użyciu, ale wolej ma dużo większą funkcjonalność.

0

Mam nadzieję, że kod ten można rozwiązać problemu

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

trochę późno, ale można zaakceptować wszystkie cerificates ten sposób ..

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

w dziennikach widać to ..

AsyncHttpClient: Uwaga! Używanie poprawki jest niebezpieczne, ponieważ nie weryfikuje certyfikatów SSL.

Powiązane problemy