Thema: C++ Webseite einlesen - Nachricht an den Server?
Hey Leute!
Ich möchte einen kleinen Client schreiben, der eine Webseite liest und mir Links, die auf der Seite stehen in eine Liste schreibt.
Soweit funktioniert alles ganz gut, nur habe ich Probleme bei der Kommunikation mit den Webservern.
Mein Client sieht vom prinzipiellen Aufbau aus wie dieser hier.
Vor der Zeile
bytes = recv(sock, buffer, sizeof(buffer) - 1, 0);
schicke ich eine Nachricht an den Server.
Das sieht so aus:
const char* request = ( "GET " + pfad + " HTTP/1.0 Host: " + host + "\r\n\r\n" ).c_str();
send(sock, request, strlen( request ), 0);
Dabei habe ich einen URL wie beispielsweise http://www.fritz.de/_/audios/jingles_jsp.html vorher schon korrekt zerlegt.
Ich frag mich nur gerade, ob meine Nachricht an den Server Blödsinn ist. Ich bekomme beispielsweise bei der hier angegebenen Adresse folgende Nachricht vom Server:
HTTP/1.1 302 Found
Date: Sat, 08 Dec 2007 13:09:13 GMT
Server: Apache/2.0.49 (Linux/SuSE)
Location: http://www.fritz.de
Content-Length: 288
Connection: close
Content-Type: text/html; charset=iso-8859-1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.fritz.de">here</a>.</p>
<hr />
<address>Apache/2.0.49 (Linux/SuSE) Server at 192.108.72.30 Port 80</address>
</body></html>
Sende ich den gleichen request wie folgt...
const char* request = ( "GET " + pfad + " HTTP/1.1 Host: " + host + "\r\n\r\n" ).c_str();
send(sock, request, strlen( request ), 0);
... also mit dem Eintrag HTTP/1.1 kriege ich sogar gesagt, dass mein Request nicht passt.
HTTP/1.1 400 Bad Request
Date: Sat, 08 Dec 2007 13:08:33 GMT
Server: Apache/2.0.49 (Linux/SuSE)
Content-Length: 311
Connection: close
Content-Type: text/html; charset=iso-8859-1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr />
<address>Apache/2.0.49 (Linux/SuSE) Server at 192.108.72.30 Port 80</address>
</body></html>
Was erwartet der Server von meinem Client für Nachrichten, dass das passt?
Kann mir da jemand helfen?