Der Martin: HTTP Problem bei Verwendung von fsockopen

Beitrag lesen

Hallo,

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.

nein, das hast du wohl missverstanden. Mit dem doppelten Zeilenumbruch wird nur der Request-Header beendet und damit quasi vom Request-Body (falls vorhanden) getrennt.

fputs($fp, "Content-Length: 24\r\n");
  fputs($fp, "login=user&pass=password\r\n");

Zwischen diesen beiden Zeilen sollte der doppelte Umbruch stehen. Denn die letzte Zeile sendet ja schon die eigentlichen POST-Daten, also den Inhalt (Body) des Requests.

Your browser sent a request that this server could not understand.
Request header field is missing ':' separator.

Zu Recht.

login=user&pass=password

Der Server versucht verzweifelt, diese Zeile noch als HTTP-Header zu interpretieren, und scheitert schon allein an der Formalität, dass nach dem vermeintlichen Keyword kein ':' kommt.

Weiß jemand, wo das Problem liegt?

Die HTTP-Spezifikation?

So long,
 Martin

--
Noch Fragen? - Ich weiß es auch nicht.