2010-02-13 8 views
6

Ich habe eine einfache Java-Client-Anwendung (Android App). Ich muss eine PHP-Server-Anwendung schreiben, die eine Anfrage von der Java-Client-Anwendung erhält, einige Daten in eine MySQL-Datenbank zu schreiben oder einige Daten aus der MySQL-Datenbank zu lesen. Es sollte mit einer Statusmeldung (Write failed/success) bzw. den angeforderten Daten antworten.Wie implementiert man die Kommunikation zwischen Java-Client-Anwendung (Android) und PHP-Server-Anwendung?

Wie bekomme ich den Java-Client eine Anfrage senden und erhalten Sie die Antwort aus dem PHP-Programm und wie würde das PHP-Programm die Anfrage erhalten und die Antwort senden? Ich habe über SOAP- und REST-Architekturen gegoogelt, bin aber auf der Suche nach einem einfachen Tutorial, mit dem ich dieses einfache Programm implementieren kann.

Danke.

Antwort

6

Mit der grundlegenden Java SE API können Sie java.net.URLConnection verwenden, um eine HTTP-Anfrage auszulösen. Ein grundlegendes Beispiel für das Auslösen einer GET Anfrage kann in Sun tutorial on the subject gefunden werden. Eine POST Anfrage ist nicht viel anders, Sie müssen stattdessen nur URLConnection#setDoOutput() auf true setzen und die Abfragezeichenfolge auf URLConnection#getOutputStream() statt in URL schreiben.

Beachten Sie, dass es "träge ausgeführt" ist, wird die Anfrage nur ausgelöst, wenn Sie tatsächlich den Antwort-Stream von URLConnection#getInputStream() erhalten, obwohl Sie es nicht benötigen.

Wenn Sie weniger verbose Code und/oder mehr Kontrolle über die Anfrage wollen, dann kann ich empfehlen, Apache Commons HttpComponents Client zu verwenden.

Das PHP-Programm wiederum kann nur auf die übliche Weise geschrieben werden. Holen Sie sich Anfrage-Parameter von $_GET, $_POST und so weiter und echo die Antwort. Nichts Besonderes muss hier getan werden. Sie können jedoch ein einfacheres analysierbares Antwortformat wie XML oder JSON verwenden.

+0

Nehmen wir an, dass wir eine HTTP-Anfrage an das PHP-Programm gesendet haben, das die $ _GET/$ _ POST-Parameter empfängt, eine Verarbeitung durchführt und eine Zeichenfolge "Processing successfully" zurücksenden möchte. Mache ich einfach $ string und das Java-Programm wird es in URLConnection InputStream erhalten? – user245120

+1

Das ist richtig. – BalusC

+0

Beim Ausführen des Skripts im Tutorial bin ich auf den Fehler http://stackoverflow.com/questions/2543106/fatal-error-by-java-runtime-environment gestoßen, aber ich bin nicht in der Lage, das zu erraten Grund für das Gleiche. – w2lame

1

Sie sollten einen einfachen JSON- oder XML-basierten REST-Webdienst mit PHP erstellen.

Dann können Sie mit dem Android SDK das Modul HttpClient verwenden, um eine Verbindung zu Ihrem Webdienst herzustellen. Das SDK bietet auch ein JSON und XML Modul zum Parsen des Ergebnisses.

Verwandte Themen