PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java und Post-Daten für php



BlueJay
14-02-2011, 17:01
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:

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:



<?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

msi
14-02-2011, 20:35
du kannst ja mal den http traffic aufzeichnen, zB mit wireshark oder tcpdump dann sieht man auch mehr.

BlueJay
16-02-2011, 11:21
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

BlueJay
16-02-2011, 18:21
so, jetzt habe ich den Bösewicht gefunden!


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:


InputStream in = url.openStream();

Setzt man dafür dieses ein, klappt die Sache:


InputStream in = urlcon.getInputStream();

Gruß,
Ulrike