Domanda

Ho bisogno di scaricare una pagina web su un app Android e sto avendo un momento difficile decidere se utilizzare l'androide HTTP Apache cliente o URLConnection di Java.

Qualche idea?

È stato utile?

Soluzione

Per la maggior parte delle cose direi che HttpClient è la strada da percorrere. Tuttavia ci sono alcune situazioni e casi limite in cui mi piacerebbe ripiegare ad un URLConnection. Esempi di casi limite qui e qui

Modifica
Una domanda simile è stato chiesto prima: httpclient vs HttpURLConnection . presumo che HttpUrlConnection è un po 'più veloce come il HttpClient è costruito sulla base delle librerie standard di Java. Tuttavia Vorrei trovare il codice HttpClient molto più veloce e più facile da scrivere e mantenere. Secondo un commenti sotto, gli elementi fondamentali di HttpClient sono stati prestazioni ottimizzate.

Se le prestazioni sono una delle principali preoccupazioni la soluzione migliore è quella di scrivere due clienti, uno con ogni metodo, quindi punto di riferimento entrambi. Se si esegue questa operazione, fatecelo sapere i risultati.

Altri suggerimenti

Google ha silenziosamente deprecato l'utilizzo del client HTTP Apache dal Gingerbread: http : //android-developers.blogspot.com/2011/09/androids-http-clients.html . E mentre essi non segnano con annotazioni deprecato, suggeriscono di utilizzare HttpURLConnection per nuove applicazioni come:. it is where we [Google] will be spending our energy going forward

Personalmente non mi piace che la decisione e avrei preferito attenersi a HttpClient 4.1+, in quanto è più veloce, hanno un minor numero di bug e viene aggiornato regolarmente. E mentre non è possibile aggiornare la libreria di sistema alla versione 4.1, è possibile includere HttpClient vaso al progetto Android (come l'ulteriore vantaggio questo permetterebbe di non dipendere da correzioni di bug e aggiornamenti di Google vendor). C'è un trabocchetto però: per evitare possibili collisioni con built-in libreria è necessario rinominare httpclient pacchetti utilizzando lo strumento JarJar. Si è rivelato qualcuno già ha fatto questo (barattolo riconfezionato e progetti di libreria Android sono disponibili per il download):

http://code.google.com/p/httpclientandroidlib/

Questo è un riconfezionamento di HttpClient 4.1 per Android. La versione di HttpClient nel SDK di Android è 4.0beta2. Ci sono stati diversi aggiornamenti HttpClient e qualche bugfix tanto necessari come auth caching dal momento che la 4.0beta.

Dal momento che Google ha deprecato HttpClient a favore di standard di Java HttpURLConnection ho creato uno script per convertire un rilascio di magazzino Apache è HttpClient in una libreria di Android.

Modifiche a magazzino HttpClient

  • rinominati tutti i pacchetti org.apache.http a ch.boye.httpclientandroidlib
  • soppresso tutte le classi dipende org.ietf. * (SPNEGO autenticazione)
  • Sostituito org.apache.commons.codec.binary.Base64 con android.util.Base64
  • Creata una nuova classe HttpClientAndroidLog per sostituire org.apache.commons.logging

in Gingerbread e successivamente, HttpURLConnection è la strada da percorrere. considerare Apache HttpClient deprecato. (Si noti anche che Android non usa HttpClient 4.1, citato in un altro commento.)

se si dispone di un caso in cui Apache HttpClient è più veloce, segnalarlo come un bug qui: http://code.google.com/p/android/issues/list

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top