Frage

Ich muss eine Webseite in einer Android -App herunterladen, und es fällt mir schwer, mich zu entscheiden, ob der Android Apache HTTP -Client oder die UrlConnection von Java verwendet werden soll.

Irgendwelche Gedanken?

War es hilfreich?

Lösung

Für die meisten Dinge würde ich das sagen HttpClient ist der richtige Weg. Es gibt jedoch einige Situationen und Randfälle, in denen ich auf a zurückfallen würde URLConnection. Beispiele für Randfälle hier und hier

BEARBEITEN
Eine ähnliche Frage wurde schon einmal gestellt: httpclient vs httpurlConnection. Ich würde das annehmen HttpUrlConnection ist etwas schneller wie das HttpClient ist auf den Standard -Java -Bibliotheken aufgebaut. Jedoch ich würde finden HttpClient Code viel schneller und einfacher zu schreiben und zu warten. Laut Kommentaren unten die Kernelemente von HttpClient wurden leistungsoptimiert.

Wenn die Leistung ein Hauptanliegen darstellt, ist es Ihre beste Wahl, zwei Kunden zu schreiben, eine mit jeder Methode, und dann beide zu einem Benchmark. Wenn Sie dies tun, teilen Sie uns bitte die Ergebnisse mit.

Andere Tipps

Google hat seit Lebkuchen die Verwendung von Apache HTTP -Client still veraltet: http://android-developers.blogspot.com/2011/09/androids-http-clients.html. Und obwohl sie es nicht mit veralteten Annotation markierten, empfehlen sie Ihnen, HttpurlConnection für neue Anwendungen zu verwenden. it is where we [Google] will be spending our energy going forward.

Persönlich mag ich diese Entscheidung nicht und würde mich lieber an Httpclient 4.1+ halten, da sie schneller ist, weniger Fehler habe und regelmäßig aktualisiert wird. Während Sie die Systembibliothek nicht auf Version 4.1 aktualisieren können, können Sie HTTPCLIENT JAR in Ihr Android -Projekt aufnehmen (da Sie den zusätzlichen Nutzen nicht von Google -Fehlerbehebungen und Anbieter -Updates abhängen können). Es gibt jedoch einen Fallstrick: Um mögliche Kollisionen mit integrierter Bibliothek zu verhindern, sollten Sie HTTPCLIENT-Pakete mithilfe von Jarjar Tool umbenennen. Es stellte sich heraus, dass jemand dies bereits getan hat (umgestalte Jar- und Android -Bibliotheksprojekte stehen zum Download zur Verfügung):

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

Dies ist eine Neuverpackung von HTTPCLIENT 4.1 für Android. Die Version von httpclient im Android SDK beträgt 4.0beta2. Es gab mehrere Updates für HTTPClient und einige dringend benötigte Fehler wie das Auth-Caching seit der 4.0beta.

Da Google HTTPClient zugunsten der Java -Standard -HttpurlConnection veraltet hat, habe ich ein Skript erstellt, um eine Aktienveröffentlichung von Apache's HTTPClient in eine Android -Bibliothek umzuwandeln.

Änderungen an Aktien httpclient

  • Alle Pakete org.apache.http in ch.boye.httpclientandroidlib umbenannt
  • Alle Klassen abhängig von org.ietf.* (SPNEGO -Authentifizierung) gelöscht
  • Ersetzt org.apache.commons.codec.base.base64 mit Android.util.base64
  • Erstellt eine neue Klasse httpclientandroidlog, um org.apache.commons.logging zu ersetzen

In Lebkuchen und später ist HttpurlConnection der richtige Weg. Betrachten Sie Apache Httpclient veraltet. (Beachten Sie auch, dass Android Httpclient 4.1 nicht verwendet, in einem anderen Kommentar erwähnt.)

Wenn Sie einen Fall haben, in dem Apache Httpclient schneller ist, melden Sie ihn hier als Fehler: http://code.google.com/p/android/issues/List

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top