Konnte das schon jemand realisieren?
Habe ein Gästebuch in Java geschrieben und möchte nun die Daten via POST übertragen an ein PHP-Skript mit dem Namen anfrage.php. Hbe das folgendermassen versucht:
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.io.*;
public class START_GBOOK extends Applet implements Sender {
public void init() {
gbook gb = new gbook(this);
add(gb);
}
public void senden(String s) {
HttpURLConnection connection = null;
URL url;
try {
URL temp_url = getCodeBase();
String string_url = temp_url.toString()+"anfrage.php";
url = new URL(string_url);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
PrintStream out = new PrintStream(connection.getOutputStream());
out.println(s);
out.flush();
out.close();
} catch(MalformedURLException murle) {
} catch(IOException ioe) {
}
}
}
Allerdings scheint die Methode senden() nicht zu funktionieren. Was mache ich falsch?
Danke für Antwort und wünsche ein schönes Wochenende.
Sir MacKerberus
Hm. Funktioniert immer noch nicht.
Mir ist aber was eingefallen:
Code:
$var = $HTTP_POST_VARS[""];
So frage ich am Angang meines Skriptes die Variable ab. Normalerweise müsste man ja den Namen des Feldes aus welchem die Daten stammen angeben. Wenn ich über den PrintStream was sende, wie weiss ich wie das nicht-existente Feld heisst?
Das Problem hatte ich auch mal.
Aaaaaaaallsoo:
Was du in den Stream schreibst, sind einfach Eingaben an den Server. Z.b. würdest du "GET /index.htm HTTP ... usw. senden, um eine Seite abzurufen (nur das scheint java ja schon für dich zumachen, da du die METHOD wählst.
Um Formularfelder zu senden, musst du das gesamte POST-Formular "nachmachen", was ein Browser auch senden würde, und das ist nicht ohne.
Ich habe das hinbekommen, aber für den eigentlich aufwendigeren Fall, eine Datei auf den Server hochzuladen. Wie man einfache Formularfelder mit FELDNAME=FELDINHALT POSTet weiss ich leider nicht, sorry.
Trotzdem kannst du dir mal den Code ansehen, da siehst du, wie der Formular-Header prinzipiell aufgebaut ist, und im Netz nach Dokus über das POST-Format suchen.
Viel Glück wünsch ich dir!
mfg
Paul
EDIT: Der Code unten scheint das benötigte aber bereits zu tun, und zwar in der Zeile 25:
printer.print("Content-Disposition: ...
da siehst du, wie die felder "name" und "filename" belegt werden. die kommen in PHP auch an. Da kannst du deine eigenen Felder reinschreiben denke ich.
Dieser Code erzeugt einen Stream, in den man schreiben kann, durch close(); wird dieser dann auf den Server hochgeladen, und man kann in PHP die Datei abholen. Falls du dazu Fragen hast, her damit.
Denke ja. ob hidden oder nicht, POST ist POST...
Das einzige was man sich von obigem code wirklich sparen kann ist die stream()-methode, die eh nur eine zeile enthält
dafür muss man die felder eben in zeile 25 an den string basteln...