it-swarm.com.de

Ersatz für veralteten DefaultHttpClient

Ich verwende DefaultHttpClient in meiner aktuellen App. 

Ich habe diesen Artikel gelesen, der besagt, dass DefaultHttpClient veraltet ist: http://developer.Android.com/reference/org/Apache/http/impl/client/DefaultHttpClient.html

Es verweist auf diese Website: http://Android-developers.blogspot.com/2011/09/androids-http-clients.html?m=1 die 2011 zu alt und geschrieben ist. 

Ich verwende DefaultHttpClient und folge diesem Artikel, der Apaches HttpClient verwendet: http://loopj.com/Android-async-http/

Ich frage mich, ob dies der richtige Weg ist, wenn Sie 2015 auf Android API 19 und höher programmieren.

11
Ehsan

Ok, ich habe eine Woche gewartet und so viele Nachforschungen angestellt. Ich glaube, ich habe die Antwort gefunden. 

Ich empfehle Anfängern und sogar professionellen Android-Programmierern dringend, die Existenz einer sehr hilfreichen Bibliothek namens Retrofit zu kennen:

Ausführliches Dokument ist unter http://square.github.io/retrofit/ vorhanden.

Der Stack-Überlauf enthält auch Beispiele für fast alles, was Sie über ein Netzwerk tun müssen, um einen Remote-Dienst REST zu kontaktieren.

Es ist besser, auf HttpURLConnection und AsyncTask zu verzichten. Retrofit ist wesentlich schneller und unterstützt alle Ausfallsituationen sofort.

9
Ehsan

Neben der Verknüpfung zu diesem Blog empfehlen die docs die Verwendung von URL.openConnection , die seit API Level 1 verfügbar ist.

 Alternative

5
weston

Sie sollten zu HttpURLConnection wechseln. Es erfordert etwas mehr Code, aber nicht so sehr ... In SDK 22 wurde HttpClient bereits als veraltet eingestuft, und selbst wenn Sie SDK 19 als Ziel verwenden, werden beim Kompilieren mit 22 Warnungen angezeigt.

Nur Spekulationen (kann dafür jetzt keine Quelle finden), aber ich denke, dass sie in den veralteten Bibliotheken keine Korrekturen vornehmen werden, so dass Sicherheitsprobleme oder Fehler nicht behoben werden.

3
Sebastian

Option 1: Volley

Android 1.6 (API Level 4) oder höher

Volleys Vorteile:

  • Automatische Planung von Netzwerkanforderungen.
  • Mehrere gleichzeitige Netzwerkverbindungen.
  • Transparente Datenträger- und Speicherantwort-Zwischenspeicherung mit standardmäßiger HTTP-Cache-Kohärenz.
  • Unterstützung für die Priorisierung von Anforderungen.
  • API für Stornierungsanfragen Sie können eine einzelne Anforderung stornieren oder Blöcke oder Bereiche von Anforderungen festlegen, die storniert werden sollen.
  • Einfache Anpassung, z. B. für Wiederholungsversuche und Backoff.
  • Eine starke Reihenfolge macht es einfach, Ihre Benutzeroberfläche korrekt mit Daten zu füllen, die asynchron aus dem Netzwerk abgerufen werden.
  • Debugging- und Tracing-Tools.

Option 2: OkHttp

OkHttp unterstützt Android 2.3 und höher. Für Java ist die Mindestanforderung 1.7.

Einige der in der Dokumentation aufgeführten Funktionen: 

  • Durch die Unterstützung von HTTP/2 und SPDY können alle Anfragen an denselben Host einen Socket gemeinsam nutzen.
  • Verbindungspooling verringert die Anforderungswartezeit (wenn SPDY nicht verfügbar ist).
  • Transparente GZIP verkleinert die Downloadgröße.
  • Durch das Zwischenspeichern von Antworten wird das Netzwerk für wiederholte Anforderungen vollständig vermieden.
2
Faiz Siddiqui

Es ist an der Zeit, auf OkHttp umzuschalten, wodurch HTTP effizienter und schneller wird und Bandbreite eingespart wird. Es unterstützt sowohl synchrones Blockieren als auch asynchrone Aufrufe mit Rückrufen.

OkHttp unterstützt Android 2.3 und höher.

Fügen Sie Ihrem Android-Projekt die folgende Abhängigkeit hinzu.

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