Hallo ihr,
ich hab mit fsockopen() eine Verbindung zu einem HTTP-Server geöffnet und sende mehrere Requests. Das Problem dabei ist, dass ich einen 400-Error (Bad Request) erhalte. Ich denke, das Problem besteht dabei, die Verbindung wieder zu beenden... das macht man offenbar mit einem doppelten \r\n\r\n.
Dafür hab ich am Ende jeder Zeile \r\n stehen und ganz unten drunter als letztes nochmal \r\n.
Hier mal der Code:
$fp = fsockopen($host, 80);
fputs($fp, "POST / HTTP/1.1\r\n");
fputs($fp, "Host: www.example.com\r\n");
fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; bgft)\r\n");
fputs($fp, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
fputs($fp, "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");
fputs($fp, "Accept-Encoding: gzip,deflate\r\n");
fputs($fp, "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Cookie: ".$cookie."\r\n");
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-Length: 24\r\n");
fputs($fp, "login=user&pass=password\r\n");
fputs($fp, "\r\n");
Und diese Fehlermeldung erhalte ich:
Your browser sent a request that this server could not understand.
Request header field is missing ':' separator.
login=user&pass=password
Wenn ich das letzte \r\n weglasse und direkt hinter Connect: close\r\n hänge, dann gehts. Aber dann wird natürlich alles ignoriert, was darunter noch kommt... das ist schlecht.
Weiß jemand, wo das Problem liegt?
Grüße
Sven