noe Geschrieben 15. Februar 2011 Geschrieben 15. Februar 2011 Hi! Ich hab eine ziehmlich dringende Frage und wäre für eine Antwort sehr dankbar. Es geht um ein Applet das von einem PHP skript aufgerufen wird: SearchPage Was das Applet eigentlich macht ist hier eher irrelevant (es durchsucht einen gegebenen Ordner nach .txt files, kopiert diese in einem Zip-ordner und soll den Pfad zu diesem zip-ordner zurückgeben) Das output des Applets soll dann im darüberliegenden Feld erscheinen (unter Zip file) - was es aber nicht tut. Ich arbeite zum ersten Mal mit applets im Zusammenhang von POST und ich komm nicht drauf warum der output nicht erscheint. Nachdem auf search geklickt wurde und das applet fertig ist, wird die folgende methode aufgerufen: public void doPost(String result) throws IOException { URL url; URLConnection urlConn; DataOutputStream printout; url = new URL(applet.getCodeBase().toString()); urlConn = url.openConnection(); urlConn.setDoInput(true); urlConn.setDoOutput(true); urlConn.setUseCaches(false); urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // Send POST output. printout = new DataOutputStream(urlConn.getOutputStream()); String content = "Fname=" + URLEncoder.encode(result); printout.writeBytes(content); printout.flush(); printout.close(); } So wie ich das verstanden habe sollte "Fname" dann in other.php übernommen werden, was aber nicht der fall ist: <?php $Fname = $_POST["Fname"]; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>SearchPage</title> <?php include("header.php"); ?> </head> <body> <?php include("border.php"); ?> <form method="post" action="<?php echo $PHP_SELF;?>">Zip-File:<input type="text" size="12" maxlength="12" name="Fname" value="" .$Fname><br /> </form> <APPLET CODE="applet.DICOMScanGUI.class" archive="DICOMScan.jar" WIDTH=400 HEIGHT=100> * *</APPLET> </body> </html>[/PHP] Ich glaube mein Fehler liegt im php-skript, ich weiß nur nicht wie man es anders machen kann... Zitieren
etreu Geschrieben 16. Februar 2011 Geschrieben 16. Februar 2011 Dir ist aber schon klar, dass du keinen HTTP-Request erzeugst, oder? Zitieren
noe Geschrieben 16. Februar 2011 Autor Geschrieben 16. Februar 2011 Also das Applet erzeugt die Antwort, und sendet sie. Der Servlet, der das Applet nicht direkt kenn empfängt sie. Also brauche ich eine zusätzliche Klasse wie: public class Servlet extends HttpServlet{ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { System.out.println("in Upload"); response.setContentType("application/x-java-serialized-object"); // von applet lesen InputStream in = request.getInputStream(); ObjectInputStream inputFromApplet = new ObjectInputStream(in); String echo = (String) inputFromApplet.readObject(); // an applet OutputStream outstr = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outstr); oos.writeObject(echo); oos.flush(); oos.close(); } catch(Exception e){ System.err.println(e); } } } Die Servlet Klasse empfängt dann die Ausgabe des Applets? Und wie weiß das PHP-Skript von der Servlet Klasse und dessen Verhalten? Ich hab irgendwo gelesen dass das im action-tag spezifiziert wird. Sowas wie: <form method="post" action="http://... Servlet.class">Zip-File:<input type="text" size="12" maxlength="12" name="Fname" value="" .$Fname><br /> </form>[/PHP] Ist das korrekt? Muss man sonst noch irgendwas machen? Evtl. das Applet beim Servlet anmelden, oder umgekehrt. Wie gesagt, ich mach sowas zum ersten Mal, weswegen mir einiges entfallen kann. Wenn ich aber innerhalb derselben Methode in der Applet klasse vom server lese, empfange ich das eben gesendete. Was heißen muss dass das Applet sein Job macht und die ANtwort sendet. Nur empfangen wird sie nicht. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.