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?

Re: C++ Webseite einlesen - Nachricht an den Server?

Ich habe eben gefunden, wie man den Header gestalten sollte: http://web-sniffer.net/?url=http%3A%2F% … &uak=5

Hier findet man einen Request inkl. Antwort.
Ich vermute, dass vor der Angabe des Hosts die Zeile umgebrochen werden muss und ggf. die ein oder andere Header angabe fehlt.
Probier ich gleich mal aus wink Ich melde mich nichtmehr, falls ich richtig liege ^^