• 28.08.2025, 20:41
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Anisachse

God

HTTP Anfage

Dienstag, 27. September 2005, 12:26

hi ihr,
weiß einer von euch wie ein Browser POST daten übermittelt?!

bin gerade dabei nen webchat zu bauen und hab probleme post daten einzulesen.

POST /chat HTTP/1.1
Host: localhost:3300
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:3300/
Content-Type: application/x-www-form-urlencoded
Content-Length: 19

nick=Ani&col=00fecd

das wäre eine anfrage. mein problem ist aber das sind meine schleife die die sachen einliesst hiernach aufhängt:
POST /chat HTTP/1.1
Host: localhost:3300
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:3300/
Content-Type: application/x-www-form-urlencoded
Content-Length: 19



^^ danach passiert nichts mehr. weder der browser noch der server tun irgendwas. der server wartet das der browser die letzte zeile sendet und der browser wartet anscheind das der server antwortet oO

edit:
ne frage sollte man auch stellen :-[
was zum teufel braucht der browser damit er die post daten sendet?

Y0Gi

God

Re: HTTP Anfage

Dienstag, 27. September 2005, 23:57

hast du ne leerzeile am ende? und benutzt du auch die richtigen zeilenumbrüche (\n vs. \r\n vs. \015\012...)?

ansonsten hab ich bisher POSTs gut hinbekommen, so z.b. ja beim ac-forum-poll-system.

für firefox gibt es übrigens die extension 'Live HTTP Headers', die dir vielleicht weiterhilft.

Anisachse

God

Re: HTTP Anfage

Mittwoch, 28. September 2005, 10:37

also ich les das alles mit nem Java BuffredReader ein. der liesst die zeilen umbrüche automatisch.

ich brauch nur in.readLine(); machen und er leisst ne Zeile.

das problem ist das er die Leerzeile zwischen dem Header und dem POST Feld noch liesst, aber danach garnichts mehr macht. es sieht so aus als warte der Browser darauf das der Server ihm was sendet. Was aber nicht geht weil der Browser halt das POST Feld noch nicht geschickt hat. Ohne das wäre es ziemlich sinnfrei was zu sendet da das server nicht wissen kann was der browser will.

Y0Gi

God

Re: HTTP Anfage

Mittwoch, 28. September 2005, 22:44

zeilenumbrüche sind nicht gleich zeilenumbrüche :)
wenn in einer programmiersprache \n verwendet wird, dann wird das je nach sprache direkt in das umgesetzt, was das betriebssystem verlangt (unix: \n, windows: \r\n; mac: \r) - das heißt aber nicht, dass das über plattformübergreifende socketverbindungen sinn macht! da heißt es sich ans protokoll halten. also mal mitloggen und gucken, sonst eben direkt über die ascii-werte die zeichen definieren.

hau mal deinen code hier rein, vielleicht geht in der schleife ja was schief.

Anisachse

God

Re: HTTP Anfage

Donnerstag, 29. September 2005, 17:06

Meine Scheife:
String sin = "";
String test = "";
int i = 9;
boolean post = false;
while(i > 0) {
if(test.startsWith("POST")) {
i += 5;
post = true;
}

test = in.readLine();
System.out.println("gelesen: "+test);
sin = sin+test+"#br#";
i--;
if(test.startsWith("Connecting"))
if(post)
i = 5;
else
i = 1;
}

in ist ein Objekt der Klasse BufferedReader.

IE und Firefox senden als letzte zeile Connection: keep-alive; wenn keine post anfrage kam

daher das letzte if was testen ob Connection gesendet wurde. wenn die erste zeile nicht mit POST anfing soll die letzte leerzeile noch gelesen werden und danach die anfrage geparst werden.
fing die anfrage mit post an komm noch 2 zeilen. einmal die leerzeile und die zeile mit den "variablen" die post überträgt. und genau da ist mein problem.

die letzte zeile wird nicht gesendet