2015-08-04 16 views
9

Sto usando DefaultHttpClient nella mia app corrente.Sostituzione per deprecato DefaultHttpClient

ho letto questo articolo in cui si afferma che la DefaultHttpClient è deprecato: http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html

Esso rimanda al sito: http://android-developers.blogspot.com/2011/09/androids-http-clients.html?m=1 che è troppo vecchio e scritto nel 2011.

sto andando a cadere con DefaultHttpClient e seguire questo articolo che utilizza Apache's HttpClient: http://loopj.com/android-async-http/

Mi chiedo se questa sia la strada giusta da intraprendere durante la programmazione nel 2015 con targeting per Android API 19 e versioni successive.

+0

pagina si collega a dice: 'Un callback client basato asincrono Http per Android costruito in cima ad Apache di HttpClient libraries', ma in corso ... già detto che Apache di HttpClient è deprecato così ...? – pskink

+1

btw: hai sentito parlare di https://developer.android.com/training/volley/index.html, http://square.github.io/okhttp/ e librerie simili? – pskink

+1

Ok è anche peggio se entrambi sono lo stesso.http: //loopj.com/android-async-http/ è deprecato anche da quel momento. Che cosa usano le persone oggigiorno allora? – Ehsan

risposta

9

Ok ho aspettato per una settimana e così e ha fatto tutti i lotti di ricerche. Penso di aver trovato la risposta.

Vi consiglio vivamente per i principianti e anche i programmatori Android professionali per conoscere l'esistenza di molto utile libreria chiamata Retrofit:

documento esteso è presente a http://square.github.io/retrofit/

Lo Stack overflow ha anche campioni per quasi tutto ciò che si necessità fare su una rete per contattare un servizio REST remoto.

È meglio interrompere l'uso di HttpURLConnection e AsyncTask. Il retrofit è molto più veloce e supporta tutte le situazioni di guasto fuori dalla scatola.

+0

Preferisco Volley over Retrofit (odio le annotazioni utilizzate da Retrofit). Controllalo su http://developer.android.com/training/volley/index.html – FractalBob

3

È necessario passare a HttpURLConnection. Richiede un po 'più di codice, ma non così tanto. Nell'SDK 22 hanno già deprecato HttpClient e anche se si targetizza l'SDK 19, quando si compila con 22 si ricevono degli avvertimenti.

Solo speculazioni (non è possibile trovare alcuna fonte per questo ora) ma suppongo che non risolveranno alcun problema nelle librerie deprecate, quindi eventuali problemi di sicurezza o bug rimarranno non fissati.

2

Opzione 1: Volley

Android 1.6 (API Livello 4) o superiore

i benefici di Volley:

  • scheduling automatico di richieste di rete.
  • Più connessioni di rete concomitanti.
  • Memoria cache trasparente del disco e della memoria con coerenza della cache HTTP standard.
  • Supporto per la prioritizzazione della richiesta.
  • API richiesta di cancellazione. È possibile annullare una singola richiesta oppure è possibile impostare blocchi o ambiti di richieste da annullare.
  • Facilità di personalizzazione, ad esempio, per riprovare e backoff.
  • Forte ordinamento che semplifica la corretta compilazione dell'interfaccia utente con i dati recuperati in modo asincrono dalla rete.
  • Strumenti di debug e traccia.

Opzione 2: OkHttp

OkHttp supporta Android 2.3 e superiori. Per Java, il requisito minimo è 1.7.

Alcune delle caratteristiche elencate nella documentazione:

  • HTTP/2 e il supporto SPDY consente a tutte le richieste allo stesso host di condividere un socket.
  • Il pool di connessioni riduce la latenza della richiesta (se SPDY non è disponibile).
  • GZIP trasparente riduce le dimensioni del download.
  • Il caching delle risposte evita completamente la rete per le richieste di ripetizione.
+1

Qual è la libreria sottostante per le opzioni di cui sopra? Immagino che potrebbero usare la stessa deprecata libreria client Apache? – Ehsan

+0

OkHttp e HttpUrlConnection sono client HTTP di basso livello. Volley è un client di alto livello che include OkHttp o HttpUrlConnection. –

5

Così come il collegamento a quel blog, il docs consiglia di utilizzare URL.openConnection che è stato intorno dal livello di API 1.

Alternative

0

È ora di passare a OkHttp che esegue l'HTTP in modo efficiente e velocizza il carico e consente di risparmiare larghezza di banda. Supporta sia le chiamate sincrone che i blocchi e le chiamate asincrone con i callback.

OkHttp supporta Android 2.3 e versioni successive.

Aggiungi la dipendenza sottostante al tuo progetto Android.

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