HTTP Post aus html in Java einlesen - Problem

iChaos

Aktives Mitglied
Ich habe ein Problem:

Und zwar möchte ich Daten aus einem HTML Formular an meinen Webserver senden. Da mit der Get-Methode die Formulardaten sichtbar werden(im Browser zBsp), möchte ich hier die Post-Methode verwenden. Ich weiss, viel sicherer ist es auch nicht, aber andere Möglichkeiten stehen mir zur Zeit nicht offen.
Der Webserver ist selbst geschrieben(Sockets&Streams) und benutzt kein JSP o.ä.
Bis jetzt hatte ich wenig Erfolg, denn ich bekam genau eine Zahl zurück...

Was muss ich anstellen, dass ich alle Daten die eingegeben werden, in der Java-Klasse einlesen und weiterverarbeiten kann?

Hier das html-Formular

HTML:
<html>
	<body>
		<h1>Payment</h1>
		<form name ="formular" action="http://localhost:1111" method="post">
		<p>Vorname</p>
			<input name="firstname" type="text" maxlength="20">
		<p>Nachname</p>
			<input name="lastname" type="text" maxlength="20">
		<p>Passwort</p>
			<input name="pw" type="password" maxlength="20">
		<p>Ihre Kontonummer</p>
			<input name="account1" type="text" maxlength="20">
		<p>Einzuzahlender Betrag</p>	
			<input name="amount" type="text" maxlength="20">
		<p>Betreff</p>	
			<input name="reason" type="text" maxlength="20">
		<p>Kontonummer des Empfängers</p>	
			<input name="account2" type="text" maxlength="20">
			<input type="submit" name="sendButton" value ="Send") ><br>
		</form>
	</body>
</html>

Hier wird soll das ganze eingelesen werden:
Java:
public class Post implements Runnable {

	private Thread postThread;
	private Socket client;
	private InputStream inputStream;
	private int readIn;

	public Post(Socket client) {

		this.client = client;

		postThread = new Thread(this);
		postThread.start();
	}

	public void run() {

		try {
			inputStream = client.getInputStream();
			byte[] buffer = new byte[1024];
			System.out.println("beginnt zu lesen...");
			while ((readIn = inputStream.read(bit)) != -1) {
				System.out.println(String.valueOf(readIn));
			}
			inputStream.close();

		} catch (IOException exc) {
			exc.printStackTrace();
		}
	}
}
 
Die Zahl die du erhaelst sind die Anzahl bytes, die du gelesen hast.
Die Bytes schreibt er in deinen Buffer. Du musst also die Bytes aus dem Buffer ausgeben.

Ausserdem ist deine Abbruchbedingung falsch. Leider kannst du hier nicht auf -1 pruefen, da sonst der Thread blockiert. Du musst pruefen ob der Buffer voll ist, dann hat es wahrscheinlich noch mehr daten. So genau weiss ich das auch nicht mehr... Google hilft dir sicher den richtigen Code zu finden.

Mit diesen Aenderungen sollte dein Code schon mal funktionieren:

Java:
			inputStream = client.getInputStream();
			byte[] buffer = new byte[1024];
			System.out.println("beginnt zu lesen...");
			do {
				readIn = inputStream.read(buffer);
				System.out.println(new String(buffer, 0, readIn));
			} while (readIn == buffer.length);
			inputStream.close();
 

Zurück
Oben