PDF herunterladen
PDF herunterladen
HTTP Post gehört seit Android 5.1 zu veralteten HTTP Klassen wie org.apache.http und AndroidHttpClient. [1] X Forschungsquelle Migriere deinen Code in die HttpURLConnection Klassen, welche eine Posting Funktionalität enthalten. HTTP Post wird in Java verwendet, um anzufordern, dass ein bestimmter Webserver Daten, die über ein Request-Formular übermittelt wurden, empfängt und speichert. Die Daten werden übermittelt und in Paaren aus Name und Wert gespeichert. Beispiele solcher Paare sind: email-deine E-Mail-Adresse, benutzername-dein Benutzername und password-dein Passwort.
Vorgehensweise
-
1Füge dem Android Manifest Internet-Berechtigung hinzu. Das Android Manifest ist eine XML-Datei, die dem Android-System wichtige Informationen liefert, die die Kompatibilität des Geräts und Zugriff auf Funktionen bestimmen. Füge in der Datei “AndroidManifest.xml” die folgende Zeile ein, um Internetzugang zu gewähren.
<uses-permission android:name= "android.permission.INTERNET" />
-
2Erstelle einen "try Block". In Java ist ein try Statement ein Exception Handler, der verhindert, dass das Programm abstürzt, wenn es keine Aktion ausführen kann. Da dafür eine Netzwerkverbindung nötig ist, fängt ein try Statement eine Ausnahme ab, wenn keine Verbindung hergestellt werden kann. Du kannst dies einer neuen Java-Methode hinzufügen. [2] X Forschungsquelle
try { //gib Statements ein, die zu Ausnahmen führen können }
-
3Erstelle HttpURLConnection und URL Objekte. Java ist eine objektorientierte Sprache. Ein Objekt besteht aus Zuständen und Verhaltensweisen, die Instanzen einer Klasse sind. Das HttpURLConnection Objekt sendet und empfängt Daten über das Internet. Beginne die neue Methode in deinem Code, indem du ein URL-Objekt erstellst und ihm eine URL für das HttpURLConnection Objekt zuweist, mit dem es sich verbinden soll. [3] X Forschungsquelle
URL url = new URL ( “ http : //beispielURL.com/”); HttpURLConnection client = ( HttpURLConnection ) url . openConnection ();
Werbeanzeige
- Etabliere das URL und HttpURLConnection Objekt am besten außerhalb des try Blocks, damit das Abfangen von Ausnahmen einfacher wird.
URL
url
=
new
URL
(
“
http
:
//beispielURL.com/”);
HttpURLConnection
client
=
null
;
try
{
client
=
(
HttpURLConnection
)
url
.
openConnection
();
}
-
1Setze die request Methode auf "post". Um Informationen an den Server zu senden, musst du mithilfe von setDoOutput() den Typ des HttpURLConnection Objekts auf "post" stellen und die Ausgabe auf "true". Verwende die Funktion setRequestProperty(), um ein allgemeines request property festzulegen, das zwei Elemente erfordert, einen Schlüssel mit einem bekannten Request des Servers und einen Wert, der im entsprechenden Schlüssel enthalten ist.
- Die Funktion setRequestProperty() wird als Accept-Encoding Request Header verwendet, um eine automatische Dekomprimierung zu deaktivieren.
client . setRequestMethod ( “ POST ” ); client . setRequestProperty ( “ Key ” , ” Value ” ); client . setDoOutput ( true );
-
2Gib den Stream an den Server aus. Du musst den Output-Stream vom Server anfordern, um den Output-Stream schreiben ("posten") und dann flushen und schließlich schließen zu können.
OutputStream outputPost = new BufferedOutputStream ( client . getOutputStream ()); writeStream ( outputPost ); outputPost . flush (); outputPost . close ();
- Aus Performance-Gründen ist es eine gute Idee, den Server darüber zu informieren, wie groß die Datei in Bytes sein wird. Die beste Methode ist setFixedLengthStreamingMode(int), wenn die Body-Länge bekannt ist, [4] X Forschungsquelle wohingegen setChunkedStreamingMode(int) verwendet wird, wenn seine Länge nicht bekannt ist. [5] X Forschungsquelle Wenn du keine der beiden Methoden verwendest, führt dies dazu, dass das HttpURLConnection Objekt den kompletten Body im Speicher puffert, bevor er übermittelt wird.
client . setFixedLengthStreamingMode ( outputPost . getBytes (). length ); client . setChunkedStreamingMode ( 0 );
-
3Fange Ausnahmen ab. Verwende nach dem try Statement den catch Block, um mit IOException auf eine Ausnahme bei der Eingabe und der Ausgabe zu prüfen, einen URL-Fehler mit der MalformedURL Ausnahme abzufangen und mit SocketTimeoutException zu prüfen, ob die URL nicht zeitnah eine Reaktion liefert.
catch ( MalformedURLException error ) { //Behandelt eine falsch eingegebene URL } catch ( SocketTimeoutException error ) { //Behandelt einen URL Access Timeout. } catch ( IOException error ) { //Behandelt Eingabe- und Ausgabefehler }
-
4Trenne dich von der URL. Nachdem du mit der URL-Verbindung fertig bist, musst du dich von der URL trennen. Prüfe, dass du mit einer URL verbunden bist, bevor du eine Trennung versuchst.
finally { if ( client != null ) // Stelle sicher, dass die Verbindung nicht null ist. client . disconnect (); }
Werbeanzeige
Was du brauchst
- Eine Java IDE
- Android Entwicklungs-Tools (SDK, Emulator etc.)
- Ein Android Entwickler-Telefon oder ein anderes Gerät mit Android (optional zum Testen)
- Eine Internetverbindung (zum Testen)
Referenzen
- ↑ https://developer.android.com/about/versions/android-5.1.html#http
- ↑ http://www.dummies.com/how-to/content/try-statements-in-java.html
- ↑ http://developer.android.com/reference/java/net/HttpURLConnection.html
- ↑ https://ihofmann.wordpress.com/2013/01/23/android-sending-post-requests-with-parameters/
- ↑ http://developer.android.com/reference/java/net/HttpURLConnection.html
Über dieses wikiHow
Diese Seite wurde bisher 8.451 mal abgerufen.
Werbeanzeige