Seite 1 von 1
Java Anfrage zu Python
Verfasst: Montag 4. November 2013, 21:28
von krautbert
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
Re: Java Anfrage zu Python
Verfasst: Montag 4. November 2013, 21:45
von Sirius3
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?
Re: Java Anfrage zu Python
Verfasst: Montag 4. November 2013, 21:47
von /me
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?
Bist du sicher, dass du weißt wovon du redest?
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?
Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 15:09
von krautbert
Uih, da schäme ich mich aber!
Klar, Ihr habt recht. Ich habe einfach viel zu kompiliziert gedacht!
Sorry!

Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 15:27
von snafu
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.
Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 15:37
von imho74
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:
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
PHP könnte die Daten dann in eine Datei schreiben:
Code: Alles auswählen
<?php
$file = "path/to/file/here" ;
file_put_contents($file, $_POST['one'], FILE_APPEND | LOCK_EX);
?>
Und das Java-Programm könnte die Daten dann aus der Datei wieder herausholen... Nur so als Idee.
Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 15:43
von BlackJack
@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.
Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 15:43
von snafu
Ich würde die PHP-Anwendung das Ganze ja noch in XML übersetzen lassen und es dann an Java weiterreichen...

Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 15:54
von imho74
BlackJack hat geschrieben:@imho74: Wie kommt denn da jetzt PHP mit ins Spiel?
Weil ich kein Java kann.
Es war jetzt ja auch nur eine von vielen Möglichkeiten. Man weiß ja nicht genau, was krautbert erreichen möchte.
Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 20:01
von krautbert
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.
Vorab, danke für die Antwort.
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
Re: Java Anfrage zu Python
Verfasst: Dienstag 5. November 2013, 21:52
von Leonidas
krautbert hat geschrieben:Mir wurde zugetragen, dass sich Android-Java nicht mit MySQL versteht und man einen Zwischenschritt einlegen soll.
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: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?

Okay, das macht die Sache klarer. Was du suchst ist eine REST-API, am besten mit JSON als Ausgabeformat Geht mit Python ganz einfach.