In Applet mit POST Daten versenden..

  • hi ,
    ich möchte mit einem applet die verbindung vom client zu mehreren servern + 3 verschiedene ports testen. das mach ich mit sockets und funktioniert auch super .
    jetz möcht ich das ergebnis dieser rund 100 verbindungstests aber per POST an eine seite auf dem selben server von wo ich die html-seite mit dem applet geladen habe schicken .
    ich hab dazu schon ein paar dinge im netz gefunden , es scheitert bei mir aber an einem bestimmten befehl (rot markiert). möglicherweise hat da jemand schon erfahrungen ..

    Code
    HttpURLConnection conn = null;
    URL url = new URL("http:\\mein_server\\ConnectionCheck\\output.html");
    conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");                              
    OutputStream outstream = [COLOR=Red]conn.getOutputStream();[/COLOR]

    ich fang die exception ab , die errormessage is aber "null" :sudern:

    hab auch schon probiert einfach gleich ein write dazu aufzurufen , aber das is wohl nicht die ursache meines problems..

    Code
    connection.getOutputStream().write(mytext.getBytes());

    vl liegts auch an den einstellungen im IIS dass er mich das nicht lässt .. aber da bin ich dann doch etwas überfordert .. hat vl jemand einen tipp oder eine idee für mich :confused:
    bin auch für vorschläge wie ich die informationen der tests auf dem server irgndwie einfacher bereitstellen könnte offen ..

    thx. liegrü b.

  • benutzt du wirklich backslashes in der url?
    ansonsten ist es bei fehlern immer besser den gesamten stack trace auszugeben. bei einer nullpointerexception steht in der errormessage nämlich nur 'null'

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😒😓😔😖😘😚😜😞😠😡😢😣😥😨😩😪😫😭😰😱😲😳😵😶😷

  • benutzt du wirklich backslashes in der url?
    ansonsten ist es bei fehlern immer besser den gesamten stack trace auszugeben. bei einer nullpointerexception steht in der errormessage nämlich nur 'null'



    man töte mich ! es is doch wirklich immer a kleinigkeit wenn ma scho zehntausend stunden sucht ... :(
    jetz schäm ich mich .. aber danke fürn hinweis . jetz gehts ...

  • zumindest scheint alles ohne fehler zu laufen . aber wenn ich dann

    Code
    conn.getOutputStream().flush();              
    conn.getOutputStream().close();
    this.getAppletContext().showDocument(url);

    mache, machts mir zwar die angegebene seit auf , aber die post -daten scheinen verloren zu sein .. :(

  • zumindest scheint alles ohne fehler zu laufen . aber wenn ich dann

    Code
    conn.getOutputStream().flush();              
    conn.getOutputStream().close();
    this.getAppletContext().showDocument(url);

    mache, machts mir zwar die angegebene seit auf , aber die post -daten scheinen verloren zu sein .. :(



    soweit ich mich erinnern kann, wird der request erst abgesendet, wenn du z.b. getResponseMessage(), getResponseCode(), getIntpuStream() etc. zugreifst.
    einfach den output stream zu flushen und zu schließen reicht da nicht.

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😒😓😔😖😘😚😜😞😠😡😢😣😥😨😩😪😫😭😰😱😲😳😵😶😷

  • hab ich jetz ausprobiert aber laut meinem firefox plugin das mirn header ausliest, is da genau nixi :(

    welches plugin benutzt du? tamperdata?
    requests, die von einem java-applet ausgehen werden von den plugins nicht erfasst!
    ich verwende immer für solche fälle ein kleines php script auf meinem localen webserver um zu testen, ob die requests ankommen (loggt einfach zugriffe und post/get daten mit).

    zudem: wenn du das so machst, wird der request von der java app an die seite gesendet, das resultat kommt dan über den input stream zurück.
    this.getAppletContext().showDocument(url); veranlasst den browser nur, die url aufzurufen, das ist aber ein normaler get-request.

    bist du dir sicher, dass du einen korrekten post-request absendest? sollte ungefähr so aussehen:

    Code
    POST /test/blah HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Host: localhost
    Content-Length: 17
    
    
    test=x&lsk=asldkj


    Eigentlich sollte es reichen, den richtigen content type zu setzen:
    conn.addRequestProperty("Content-Type","application/x-www-form-urlencoded");
    und die daten dann richtig codiert in den output stream zu schreiben, um den rest kümmert sich java selbst.

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😒😓😔😖😘😚😜😞😠😡😢😣😥😨😩😪😫😭😰😱😲😳😵😶😷

    Einmal editiert, zuletzt von sutupud (23. Oktober 2010 um 10:59)

  • welches plugin benutzt du? tamperdata?
    requests, die von einem java-applet ausgehen werden von den plugins nicht erfasst!

    ähm ja ... na das muss ma ja mal wissen .. .seufz.

    bist du dir sicher, dass du einen korrekten post-request absendest? sollte ungefähr so aussehen:

    Code
    POST /test/blah HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Host: localhost
    Content-Length: 17
    
    
    test=x&lsk=asldkj


    Eigentlich sollte es reichen, den richtigen content type zu setzen:
    conn.addRequestProperty("Content-Type","application/x-www-form-urlencoded");
    und die daten dann richtig codiert in den output stream zu schreiben, um den rest kümmert sich java selbst.



    content type hab ich gesetzt . aber ich schaus mir montag nochmal mit deinen hints an :) thx !

  • soo . meine letzten paar zeilen code im applet sind nun:

    Code
    conn.getOutputStream().flush();              
    conn.getOutputStream().close();
    InputStream in = conn.getInputStream();

    und im php ( bin hier kein großer könner , also vl hab ich da was falsch gmacht?) :

    Code
    print "_REQUEST: "; print_r($_REQUEST);
    print "_GET: "; print_r($_GET);
    print "_POST: "; print_r($_POST);

    krieg dann aber einen "Server returned HTTP response code: 405 for URL ..." was "Method not allowed" heißt .. jetz kenn ich mich dann echt nimmer aus ... :(
    gibts da keine einfachere variante meine daten aus dem applet auf dem server zur verfügung zu stellen :confused: .seufz.

  • sutupud . weißt du zufällig auch wie ma die "alle POST/GET daten auslesen" sache in asp machn kann also ohne sie direkt mit namen anzusprechen ...? wär vl gschickter in verbindung mim iis, hab dazu aber nix gscheits gfunden .. :/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!