2015-08-04 33 views
9

Używam DefaultHttpClient w mojej bieżącej aplikacji.Zamiennik przestarzałego DefaultHttpClient

czytałem ten artykuł, który stwierdza, że ​​DefaultHttpClient jest przestarzała: http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html

Wskazuje to na tej stronie internetowej: http://android-developers.blogspot.com/2011/09/androids-http-clients.html?m=1, który jest zbyt stary i napisany w 2011.

ja zamierzam spadać użyciu DefaultHttpClient i postępuj ten artykuł, który korzysta z Apache'a, to:: http://loopj.com/android-async-http/ Zastanawiam się, czy jest to właściwa ścieżka do zastosowania przy programowaniu w 2015 roku z Androidem API 19 i nowszych.

+0

strona link do mówi: 'asynchroniczny callback oparte HTTP klienta dla Androida zbudowany na szczycie Apache HttpClient libraries', ale czekaj ... ty już, że Apache HttpClient jest przestarzała tak ...? – pskink

+1

btw: czy słyszałeś o https://developer.android.com/training/volley/index.html, http://square.github.io/okhttp/ i podobnych bibliotekach? – pskink

+1

OK, jest jeszcze gorzej, jeśli oba są takie same. Http: //loopj.com/android-async-http/ jest również przestarzałe. Czego ludzie obecnie używają? – Ehsan

Odpowiedz

9

Ok Czekałem na tydzień i tak i nie wszystkie partie badań. Myślę, że znalazłem odpowiedź.

Zdecydowanie zalecamy dla początkujących, a nawet profesjonalnych programistów Androida wiedzieć o istnieniu bardzo pomocny biblioteki zwanej Retrofit:

Obszerny dokument jest obecny w http://square.github.io/retrofit/

przelewowy

stosu ma również próbki do niemal wszystko jedno potrzebie zrobić przez sieć, aby skontaktować się ze zdalną usługą REST.

Lepiej przestać używać funkcji HttpURLConnection i AsyncTask. Retrofit jest znacznie szybszy i obsługuje wszystkie awarie po wyjęciu z pudełka.

+0

Wolę Volley od Retrofit (nienawidzę adnotacji, których używa Retrofit). Sprawdź to na http://developer.android.com/training/volley/index.html – FractalBob

3

Należy przełączyć na HttpURLConnection. Wymaga nieco więcej kodu, ale nie tak bardzo. W pakiecie SDK 22 już wycofali HttpClient, a nawet jeśli kierujesz na SDK 19, podczas kompilacji z 22 otrzymujesz ostrzeżenia.

Po prostu spekulacje (nie można znaleźć żadnego źródła teraz), ale myślę, że nie zrobią żadnych poprawek w przestarzałych bibliotekach, więc wszelkie problemy bezpieczeństwa lub błędy pozostaną nieutrwalone.

2

Wariant 1: Volley

Android 1.6 (API Level 4) lub wyższe

korzyści salwa za:

  • Automatyczne szeregowanie żądań sieciowych.
  • Wiele jednoczesnych połączeń sieciowych.
  • Przechwytywanie buforowania pamięci dyskowej i pamięci ze standardową koherencją pamięci podręcznej HTTP.
  • Obsługa priorytetu żądań.
  • API żądania anulowania. Możesz anulować pojedyncze żądanie lub ustawić bloki lub zakresy żądań anulowania.
  • Łatwość dostosowywania, na przykład do ponawiania prób i wycofywania.
  • Silne porządkowanie, które ułatwia prawidłowe wypełnianie interfejsu użytkownika danymi pobieranymi asynchronicznie z sieci.
  • Narzędzia do debugowania i śledzenia.

Opcja 2: OkHttp

OkHttp obsługuje Android 2.3 i powyżej. W przypadku języka Java minimalnym wymaganiem jest 1,7.

Niektóre funkcje wymienione w dokumentacji:

  • HTTP/2 i wsparcie SPDY umożliwia wszystkie żądania do tego samego hosta dzielić gniazdo.
  • Pule połączeń zmniejszają opóźnienie żądania (jeśli SPDY nie jest dostępna).
  • Przezroczysty GZIP zmniejsza rozmiary pobierania.
  • Buforowanie odpowiedzi pozwala całkowicie uniknąć sieci w przypadku powtarzających się żądań.
+1

Jaka jest podstawowa biblioteka dla powyższych opcji? Sądzę, że mogą używać tej samej wycofanej biblioteki klienta Apache? – Ehsan

+0

OkHttp i HttpUrlConnection są klientami HTTP niskiego poziomu. Volley jest klientem wysokiego poziomu, który otacza OkHttp lub HttpUrlConnection. –

0

Czas przejść na OkHttp, który działa wydajnie HTTP i sprawia, że ​​ładuje się szybciej i oszczędza przepustowość. Obsługuje zarówno synchroniczne połączenia blokujące, jak i asynchroniczne połączenia z oddzwonień.

OkHttp obsługuje system Android 2.3 lub nowszy.

Dodaj zależności poniżej do swojego projektu Android.

compile 'com.squareup.okhttp:okhttp:2.4.0'