Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Java und Post-Daten für php

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Java und Post-Daten für php

    Hallo Leute,

    ich bekomme ums Verrecken keine Post-Daten von Java aus zu einem PHP-Programm geschickt. Fehlermeldung: keine

    GET-Daten sind kein Problem.

    Die Methode:
    Code:
     public String get_tabelle()
      { String query="modus=0&tab="+kennung+"&challenge="+challenge;
        String ret="",gelesen;
        try
        { URL url = new URL(urlstr);
          HttpURLConnection urlcon=(HttpURLConnection)url.openConnection();
          urlcon.setDoOutput(true);
          // ab hier analog ajax-post-gequest:
          urlcon.setRequestMethod("POST");
          urlcon.setUseCaches(false);
          urlcon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
          urlcon.setRequestProperty("Content-Length", ""+ query.length());
    
          // Post-Daten auf Reise schicken:
          OutputStreamWriter out=new OutputStreamWriter(urlcon.getOutputStream());
          out.write(query);
          out.flush();
          out.close();
          System.out.println(urlcon.getResponseMessage()); // hier kommt OK an
    
          InputStream in = url.openStream();
          BufferedReader b = new BufferedReader(new InputStreamReader(in));
          do { gelesen=b.readLine(); if (gelesen!=null) ret+=gelesen; } while (gelesen!=null);
          b.close();
        }
        catch (MalformedURLException e) { System.out.println("vermurkste url"); }
        catch (IOException e) { System.out.println("IO-Error"); }
        System.out.println(ret);
        return ret;
      }
    das PHP-Gegenstück:

    Code:
    <?php
    
    echo "GET-Daten:\n";
    foreach ( $_GET as $key => $value )  echo " $key  =  $value \n";
    
    echo "POST-Daten:\n";
    foreach ( $_POST as $key => $value)  echo " $key = $value \n";
    
    die("\nQuatsch mit Sosse");
    
    ?>
    Wo ist da der Wurm drin?

    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    du kannst ja mal den http traffic aufzeichnen, zB mit wireshark oder tcpdump dann sieht man auch mehr.

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Da ist mir noch was im Sniffer aufgefallen:

    Das HTML-Formular sendet seinen Post-Request ab, bekommt irgendwann seine 200, und gut ist.

    Das Java-Konstrukt sendet, soweit ich das sehen kann, korrekt einen Post-Request ab, bekommt sein 200 mit den erwarteten Daten und sendet nochmal ein GET-Request ab. Das, was es auffängt, ist nur der Response vom 2.Request, und der ist natürlich Humbug.

    Die Methode wird nur 1x duchlaufen.

    Gruß,
    Ulrike
    Geändert von BlueJay (16-02-2011 um 12:24 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  4. #4
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    so, jetzt habe ich den Bösewicht gefunden!

    Code:
     public String get_tabelle()
      { String ret="",gelesen;
        try
        { String query="modus=0&tabelle="+my_tab+"&chall="+challenge;
          URL url = new URL(urlstr);
          HttpURLConnection urlcon=(HttpURLConnection)url.openConnection();
          urlcon.setDoOutput(true);
          urlcon.setUseCaches(false);
          urlcon.setRequestMethod("POST"); 
          urlcon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
          urlcon.setRequestProperty("Content-Length", ""+ query.length());
          urlcon.setRequestProperty("Connection", "close");
    
          OutputStreamWriter out=new OutputStreamWriter(urlcon.getOutputStream());
          out.write(query);
          out.flush();
    
          InputStream in = urlcon.getInputStream();  // da isser!
          BufferedReader b = new BufferedReader(new InputStreamReader(in));
          do { gelesen=b.readLine(); if (gelesen!=null) ret+=gelesen; System.out.println(gelesen); } while (gelesen!=null);
          out.close();
          b.close();
          
        }
        catch (MalformedURLException e) { System.out.println("vermurkste url"); }
        catch (IOException e) { System.out.println("IO-Error"); }
        raeumen.main.htmpopup(ret);
        return ret;
      }
    Dieses Mistviech hier setzte mir heimlich, still und leise das GET ab:

    Code:
    InputStream in = url.openStream();
    Setzt man dafür dieses ein, klappt die Sache:

    Code:
    InputStream in = urlcon.getInputStream();
    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •