Hi Leute,
ich frage mich gerade wie ich das bewerkstelligen soll, dass ein Python Programm auf eine Java Anfrage antwortet.
Bedeutet, dass ich ein Python Programm habe, das auf Port X hört. Kommt dort eine Anfrage von einer Java Applikation auf diesen Port soll er was mit dieser Anfrage anfangen können. Gibt es da ne Bibliothek damit Python Java Code versteht?
Oder einen anderen Trick?
Grüße
Java Anfrage zu Python
Hi krautbert,
was soll das sein eine 'Java-Anfrage'? Damit zwei Prozesse miteinander kommunizieren können, müssen beide ein bestimmtes Protokoll, dabei ist es egal, in welcher Programmiersprache dieses Protokoll implementiert wird.
Ist ein Protokoll vorgegeben? Wenn ja welches? Wenn nein, welche Anforderungen gibt es an die Kommunikation?
was soll das sein eine 'Java-Anfrage'? Damit zwei Prozesse miteinander kommunizieren können, müssen beide ein bestimmtes Protokoll, dabei ist es egal, in welcher Programmiersprache dieses Protokoll implementiert wird.
Ist ein Protokoll vorgegeben? Wenn ja welches? Wenn nein, welche Anforderungen gibt es an die Kommunikation?
Bist du sicher, dass du weißt wovon du redest?krautbert hat geschrieben:ich frage mich gerade wie ich das bewerkstelligen soll, dass ein Python Programm auf eine Java Anfrage antwortet.
Bedeutet, dass ich ein Python Programm habe, das auf Port X hört. Kommt dort eine Anfrage von einer Java Applikation auf diesen Port soll er was mit dieser Anfrage anfangen können. Gibt es da ne Bibliothek damit Python Java Code versteht?
Im Netz kommunizieren ständig viele in unterschiedlichen Sprachen geschriebenen Programme auf irgendwelchen Ports miteinander. Dafür gibt es dann bestimmte Protokolle auf die man sich geeinigt hat. Der Datenaustausch erfolgt dann in einem in dem jeweiligen Protokoll definierten Format. Code wird da nicht durch die Gegend geschickt. Meinst du dein Webbrowser führt C-Code aus, weil der Webserver am anderen Ende in C geschrieben ist?
Wenn wir schon beim zu komplizierten Denken sind: Muss es wirklich über einen Port laufen? Ansonsten könntest du dir nämlich mal Jython angucken. Damit kann man Java-Klassen als Python-Module importieren und dann mit ganz normaler Python-Syntax als Schnittstelle zwischen beiden Welten arbeiten. Du könntest die Java-Anfragen dann dementsprechend über eine Art Zwischenschicht an die Python-Bibliothek weitervermitteln und dort natürlich auch die Rückgabewerte für deine Aufrufe erhalten.
Ich hatte gerade an soetwas wie POST aus dem HTTP gedacht (hatte ich mal bei stackoverflow.com gesehen). Man könnte Python verwenden, um Daten zu senden, z.B. einen Webserver:
PHP könnte die Daten dann in eine Datei schreiben:
Und das Java-Programm könnte die Daten dann aus der Datei wieder herausholen... Nur so als Idee.
Code: Alles auswählen
import urllib2, urllib
mydata = [('one','1')] #The first is the var name the second is the value
mydata = urllib.urlencode(mydata)
path = 'http://localhost/new.php' #The URL you want to POST to
req = urllib2.Request(path, mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
page = urllib2.urlopen(req).read()
print page
Code: Alles auswählen
<?php
$file = "path/to/file/here" ;
file_put_contents($file, $_POST['one'], FILE_APPEND | LOCK_EX);
?>
@imho74: Wie kommt denn da jetzt PHP mit ins Spiel? Die Frage war wie man von Java aus eine Anfrage an ein Python-Programm stellen kann. Klar kann man das auch über HTTP machen, dann müsste man aber in Python keinen Webserver befragen, also einen Client schreiben, sondern einen Webserver. Was mit der Standardbibliothek nicht allzu schwer ist, weil es dort schon einen gibt. HTTP ist aber eventuell nicht so gut geeignet. Würde ich eigentlich nur nehmen wenn grosse Dateien/Datenmengen als Antwort auf einfache Anfragen gestreamt werden sollen. Sonst eher so etwas wie JSON-RPC oder XML-RPC.
Vorab, danke für die Antwort.snafu hat geschrieben:Wenn wir schon beim zu komplizierten Denken sind: Muss es wirklich über einen Port laufen? Ansonsten könntest du dir nämlich mal Jython angucken. Damit kann man Java-Klassen als Python-Module importieren und dann mit ganz normaler Python-Syntax als Schnittstelle zwischen beiden Welten arbeiten. Du könntest die Java-Anfragen dann dementsprechend über eine Art Zwischenschicht an die Python-Bibliothek weitervermitteln und dort natürlich auch die Rückgabewerte für deine Aufrufe erhalten.
Ich habe vor eine Android-APP schreiben zu lassen. Die APP soll sich Daten von einer MySQL DB aholen. Mir wurde zugetragen, dass sich Android-Java nicht mit MySQL versteht und man einen Zwischenschritt einlegen soll. Da dachte ich, dass die App Anfragen an einen Port vom (ich nenne ihm jetzt mal) Python-Server schickt und der Server die Anfrage umgewandelt und an die MySQL DB weiterleitet. Die DB antwortet dem Server und der wiederum gibt es weiter an die APP. Sinnvoll? Verbesserungsvorschläge?
Port auch aus Sicherheitsgründen (Firewall).
Grüße
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das würde ich so nicht sagen. Der Punkt ist dass man keine Datenbank direkt am Internet hängen haben will weil dann Leute ggf. beliebigen Unfug mit den Daten machen können.krautbert hat geschrieben:Mir wurde zugetragen, dass sich Android-Java nicht mit MySQL versteht und man einen Zwischenschritt einlegen soll.
Okay, das macht die Sache klarer. Was du suchst ist eine REST-API, am besten mit JSON als Ausgabeformat Geht mit Python ganz einfach.krautbert hat geschrieben:Da dachte ich, dass die App Anfragen an einen Port vom (ich nenne ihm jetzt mal) Python-Server schickt und der Server die Anfrage umgewandelt und an die MySQL DB weiterleitet. Die DB antwortet dem Server und der wiederum gibt es weiter an die APP. Sinnvoll? Verbesserungsvorschläge?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice