Hallo,
ich habe eine HTML-Seite mit einem Formular. Die Formulatdaten werden per Post an den Server übermittelt. Ich würde gerne das konkrete Format der übermittelten Daten wissen, damit ich
das POSTing mit Java nachbilden kann.
Mein Code bisher:
import java.net.*;
import java.io.*;
public static void starteClient()
{
try {
Socket socket = new Socket(InetAddress.getLocalHost().getHostName(), 3398);
DataOutputStream out = new DataOutputStream (socket.getOutputStream());
// … WAS MUSS HIER STEHEN???
socket.close();
} catch (Exception e) {
System.out.println(„Verbindungsfehler!“);
e.printStackTrace();
}
}
Danke vorab für jeden Tip!
Du willst also den HTTP Post nachbauen? musste dir mal die RFC dazu durchlesen, wie sowas auszusehen hat:
http://www.w3.org/Protocols/rfc2068/rfc2068
Ist nicht arg kompliziert, du brauchst eben den HTTP-Header wo sowas drinsteht in der Art wie
„POST /target HTTP/1.1
Host: Servername
Content-Length: 30“
dann eine Leerzeile und dann die codierten Variablen wie bei GET.
bla=fasel&variable=wert&key=value wobei du natürlich Sonderzeichen ersetzen musst, wie z.b. ein Leerzeichen durch %20
Danke für die schnelle Antwort.
Leider ist mir immer noch nicht klar wie ich
in einem konkreten Fall den die Werte erhalte.
Wie ermittle ich z.B. den Content-Type und den Content-length?
Nehmen wir an, ich habe ein Userfeld und ein Passwordfeld.
User ist ‚Mattes‘ und Passwort ist ‚Geheim‘. Ist dann
der Content-length(User=Mattes&:stuck_out_tongue_winking_eye:assword=Geheim)=27?
Gibt es vielleicht ein Möglichkeit die per POST übertragenen Daten sichtbar zu machen?
Einen schönen Gruß aus Köln
Mattes
Wie ermittle ich z.B. den Content-Type und den Content-length?
Content-type: x-www-form-urlencoded
Nehmen wir an, ich habe ein Userfeld und ein Passwordfeld.
User ist ‚Mattes‘ und Passwort ist ‚Geheim‘. Ist dann
der Content-length(User=Mattes&:stuck_out_tongue_winking_eye:assword=Geheim)=27?
genau, einfach die Anzahl bytes an Daten
Gibt es vielleicht ein Möglichkeit die per POST übertragenen
Daten sichtbar zu machen?
Ja, mit einem Networksniffer, oder mit irgendwelchen Programmen, die sich zwischen dich und den Webserver einhängen oder indem du einen eigenen Server laufen lässt, der das Request ausgibt. Ist alles nicht ganz trivial.