2017-08-05 4 views
-2

ich die Klasse HttpURLConnection verwenden, aber Iam mit einigen Methoden verwechseltHttpURLConnection connect(), getInputStream(), getContent(), HttpGet

die HttpURLConnection Objektnamen annehmen "c" ist

  1. Entfernen c.connect() führt zu einer erfolgreichen Verbindung und es wird das Verbindungsergebnis ohne irgendein Problem erhalten

  2. die Ausgabe von c.getInputStream() und (InputStream) c.grtContent() sind identisch, also was ist das? Unterschied zwischen ihnen

  3. HttpGet mit dem gleichen Ansatz wie HttpURLConnection erreichen, so etwas ist der Unterschied zwischen den beiden Methoden

  4. was die zusätzlichen Vorteile für HttpURLConnection auf URLConnection

    c = (HttpURLConnection) (URL) .openConnection(); c.connect(); // das Hinzufügen oder Entfernen führt zum selben Ergebnis, also wie wird diese Methode verwendet? InputStream stream = c.getInputStream(); InputStream stream2 = (InputStream) c.getContent(); // Strom und stream2 identisch sind, so ist das, was zwischen differece getInputStream() und getContent()

    // ====================== ======

    HttpGet c = neu HttpGet (url); HttpResponse Antwort = c.execute (httpGet) InputStream stream3 = response.getEntity(). GetContent(); // auch stream3 ist derselbe wie stream & stream2; es so, wie Dosis unterschiedlich zwischen HttpGet & HttpURLConnection

+0

Stellen Sie Ihre Frage nicht in Code-Kommentare. Setzen Sie es in englische Sätze außerhalb des Codes, wo es gesehen werden kann. – EJP

+0

Fertig @EJP ...... –

Antwort

1

Von Android Dokumentation:

[HttpURLConnection ist] Ein URLConnection mit Unterstützung für HTTP-spezifische Funktionen.

Zum Beispiel können Sie von einer HttpURLConnection die HTTP-Methode oder den HTTP-Statuscode abrufen, die HTTP-spezifisch sind.

Die URLConnection Klasse hingegen ist:

Die abstrakte Klasse URLConnection die Superklasse aller Klassen ist, die eine Kommunikationsverbindung zwischen der Anwendung und einer URL

Die normale Nutzung ist vertreten:

  1. erstellen URL Objekt
  2. Erhalten Sie eine URLConnection telefonisch unter url.openConnection().Das zurückgegebene Objekt kann zu einem HttpURLConnection
  3. eine InputStream durch den Aufruf erhalten gegossen werden, um das connection.getInputStream() Methode
  4. Schließen der Verbindung ( disconnect() Methode) (@EJP Kommentare sehen)

bezüglich der connect() Methode von Die Oracle-Dokumentation:

Sie müssen die connect-Methode nicht explizit aufrufen, um die Verbindung zu initiieren. Operationen, die von einer Verbindung abhängig sind, wie getInputStream, getOutputStream usw., führen implizit die Verbindung aus, falls erforderlich.

Der Unterschied zwischen dem HttpGet und HttpURLConnection ist, dass sie zu zwei verschiedenen Bibliotheken gehören, aber funktionell sind sie mehr oder weniger die gleichen (jetzt HttpGet ist veraltet und wurde entfernt, so dass Sie es nicht im Standard finden Android APIs)

+0

4. Schließen Sie die Verbindung, indem Sie den Eingabestrom schließen. 'disconnect()' hat Auswirkungen auf das Verbindungspooling und wird normalerweise nicht verwendet. – EJP

+1

Eigentlich empfiehlt die Dokumentation, die Verbindung zu trennen, wenn Sie mit dem Lesen fertig sind. "Nachdem der Antworttext gelesen wurde, sollte die HttpURLConnection durch Aufrufen von disconnect() geschlossen werden." Die Sache, die du erwähnst, klingt ähnlich wie ein Bug, der in alten Android-Versionen (vor 2.2) vorhanden war: "Vor Android 2.2 (Froyo) hatte diese Klasse einige frustrierende Fehler. Insbesondere könnte das Aufrufen von close() auf einem lesbaren InputStream Gift machen der Verbindungspool " – user2340612

+1

Diese Dokumentation stimmt nicht mit der Oracle-Dokumentation überein, was sie falsch macht. – EJP

Verwandte Themen