Ich habe überall gesucht, aber ich konnte meine Antwort nicht finden. Gibt es eine Möglichkeit, eine einfache HTTP-Anfrage zu stellen? Ich möchte eine PHP-Seite / ein PHP-Skript auf einer meiner Websites anfordern, aber ich möchte die Webseite nicht anzeigen.
Wenn möglich möchte ich es sogar im Hintergrund machen (in einem BroadcastReceiver)
android
httpwebrequest
androidhttpclient
Mats Hofman
quelle
quelle
Antworten:
AKTUALISIEREN
Dies ist eine sehr alte Antwort. Ich werde Apaches Client definitiv nicht mehr empfehlen. Verwenden Sie stattdessen entweder:
Ursprüngliche Antwort
Fordern Sie zunächst eine Berechtigung zum Zugriff auf das Netzwerk an und fügen Sie Ihrem Manifest Folgendes hinzu:
Der einfachste Weg ist dann, den mit Android gebündelten Apache http-Client zu verwenden:
Wenn Sie möchten, dass es auf einem separaten Thread ausgeführt wird, würde ich empfehlen, AsyncTask zu erweitern:
Sie können dann eine Anfrage stellen, indem Sie:
quelle
Sofern Sie keinen expliziten Grund haben, sich für den Apache HttpClient zu entscheiden, sollten Sie java.net.URLConnection bevorzugen. Im Web finden Sie zahlreiche Beispiele für die Verwendung.
Wir haben auch die Android-Dokumentation seit Ihrem ursprünglichen Beitrag verbessert: http://developer.android.com/reference/java/net/HttpURLConnection.html
und wir haben im offiziellen Blog über die Kompromisse gesprochen: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
quelle
Hinweis: Der mit Android mitgelieferte Apache HTTP-Client ist jetzt zugunsten von HttpURLConnection veraltet . Weitere Informationen finden Sie im Android Developers Blog .
Fügen Sie
<uses-permission android:name="android.permission.INTERNET" />
Ihrem Manifest hinzu.Sie würden dann eine Webseite wie folgt abrufen:
Ich schlage auch vor, es in einem separaten Thread auszuführen:
Weitere Informationen zur Antwortbehandlung und zu POST-Anforderungen finden Sie in der Dokumentation .
quelle
readStream
ist nicht einmal definiert.Der einfachste Weg ist die Verwendung der Android-Bibliothek namens Volley
Sie können eine http / https-Anfrage so einfach senden:
In diesem Fall müssen Sie nicht in Betracht ziehen, selbst im Hintergrund zu laufen oder den Cache zu verwenden, da all dies bereits von Volley durchgeführt wurde.
quelle
Grüße
quelle
Mit einem Thread:
quelle
Ich habe dies für einen Webservice gemacht, um eine URL mit einer Gson-Bibliothek anzufordern:
Klient:
quelle
Schau dir diese tolle neue Bibliothek an, die über gradle erhältlich ist :)
build.gradle:
compile 'com.apptakk.http_request:http-request:0.1.2'
Verwendungszweck:
https://github.com/erf/http-request
quelle
Verwenden Sie Volley wie oben vorgeschlagen. Fügen Sie Folgendes zu build.gradle hinzu (Modul: App)
Fügen Sie Folgendes in AndroidManifest.xml hinzu:
Fügen Sie Ihrem Aktivitätscode Folgendes hinzu:
Es ersetzt den http-Client und ist sehr einfach.
quelle
Dies ist der neue Code für die HTTP-Get / POST-Anforderung in Android.
HTTPClient
ist benachteiligt und möglicherweise nicht so verfügbar wie in meinem Fall.Fügen Sie zunächst die beiden Abhängigkeiten in build.gradle hinzu:
Dann schreiben Sie diesen Code in
ASyncTask
indoBackground
Methode.quelle
Für mich ist der einfachste Weg die Verwendung der Bibliothek Retrofit2
Wir müssen nur eine Schnittstelle erstellen, die unsere Anforderungsmethode und Parameter enthält, und wir können für jede Anforderung einen benutzerdefinierten Header erstellen:
Und das Beste ist, wir können es asynchron einfach mit der Enqueue-Methode machen
quelle
Da in keiner der Antworten eine Möglichkeit zum Ausführen von Anforderungen mit OkHttp beschrieben wurde, einem heutzutage sehr beliebten http-Client für Android und Java im Allgemeinen, werde ich ein einfaches Beispiel geben:
Der klare Vorteil dieser Bibliothek besteht darin, dass sie uns von einigen Details auf niedriger Ebene abstrahiert und freundlichere und sicherere Möglichkeiten für die Interaktion mit ihnen bietet. Die Syntax ist ebenfalls vereinfacht und ermöglicht das Schreiben von schönem Code.
quelle