Socket GET, HTTP/1.1 400 Bad Request
-
und \r\n.. protokoll anschaun.
-
Ich muss den Host einbinden (OK?).
Kannst mir Bitte den Link schicken ?Danke.
-
Du solltest HTTP/1.0 angeben, bei 1.1 musst du mindestens auch noch den Hostnamen mitgeben.
-
Danke für die Info mit 1.0 hat es geklappt.
Jetzt passiert was, was mich Sprachlos macht.
Sollte es eigentlich nicht den Inhalt eine Seite anzeigen wenn ich mir www.test.de eingebe?
Es kommt immer der Inhalt eine Seite von (Webhoster) Anbieter ?
Oder fehlt da noch was ?
-
Kann jetzt nichts zum Problem direkt sagen. Vielleicht kommt eine Weiterleitung oder HTTP/1.0 wird vom Server nicht mehr unterstützt, was teilweise schon vorkommt, da 1.0 doch schon langsam in die Jahre kommt.
Vielleicht könntest du uns sagen, was denn genau zurück kommt.Zu dem Hypertext Transfer Protocol kann ich im übrigen nur das entsprechende RFC empfehlen zu lesen. Ist zwar etwas mühsam, dafür hat man dann gleich alles genau erklärt. Ein PDF kann man hier finden:
http://ietfreport.isoc.org/rfc2600-2699.htmlEs ist das RFC mit der Nummer 2616.
Grüssli
-
ein Beispiel ich gebe eine Seite ein, wo ich dessen Inhalt ich möchte.
Es kommt dann der Inhalt der Seite von Webhoster.HTTP/1.1 200 OK Date: Sat, 04 Oct 2008 22:00:56 GMT Server: Apache/1.3.41 (Unix) mod_gzip/1.3.26.1a mod_fastcgi/2.4.6 PHP/4.4.8 mod_ssl/2.8.31 OpenSSL/0.9.8h Last-Modified: Thu, 09 Jun 2005 14:23:52 GMT ETag: "3ee08a-649-42a850f8" Accept-Ranges: bytes Content-Length: 1609 Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- ... --> <HTML><HEAD><TITLE>.......</TITLE> <META content="text/html; charset=iso-8859-1" http-equiv=Content-Type><!-- Changed by: System Administrator, 08-April-2002 --> <META content="MSHTML 5.00.3103.1000" name=GENERATOR></HEAD> <BODY bgColor=#ffffff link=#000000 vLink=#990000><BR><BR><BR> <CENTER> <TABLE bgColor=#6e7275 border=0 cellPadding=1 cellSpacing=0 width=500> <TBODY> <TR> <TD> <TABLE bgColor=#ffffff border=0 cellPadding=10 cellSpacing=0 width="100%"><TBODY> <TR> <TD align=right><A hr
Und das komische ist das genau bei <A hr aufhört, aber trotzdem das ist nicht der Inhalt der Seite die ich möchte.
-
1. Woher willst du bei dieser Antwort wissen, dass sie vom Webhoster kommt? Ich sehe da nichts, was darauf hindeutet.
2. Logisch bricht es ab, du hast einen Buffer von 1024 Bytes übergeben, tatsächlich kommen aber 1609 Bytes bei dir an. Du liest hier als eine Anzahl an Bytes gar nicht aus. Schau dir mal Content-Length an.
Und deshalb empfehle ich auch das lesen vom RFC 2616. Denn es gibt auch die Möglichkeit, dass die Übertragungsart Chunked ist oder gar Encrypted. usw. usf.Daher muss man beim empfang den Header genau lesen und analysieren und kann dann den Body auslesen.
Grüssli
-
Viel mehr kannst du bei einmaligem Aufruf von recv() auch nicht erwarten. Du musst die Daten solange in einer Schleife abholen, bis die Verbindung beendet wurde.
-
Hallo,
ich habe das Problem gelöst.strcpy(tempo, "GET / HTTP/1.1\r\nHost: www.beispiel.de\r\n\r\n");
Danke für eure hilfe.
P.S. ich weiß dass das der Webhoster ich weil ich die abgefragte Seite kannte.
-
titanium schrieb:
Hallo,
ich habe das Problem gelöst.Solange bis
Transfer-encoding: chunked
ist.
-
Is ja logisch, wieviele Seiten liegen bei so einem Webhoster auf einer IP!
Der muss doch wissen, welche Seite man jetzt wirklich wollte.
Und das wiederum nur mit HTML 1.1!
-
Und das wiederum nur mit HTML 1.1!
-
host schrieb:
Und das wiederum nur mit HTML 1.1!
Was hab ich denn da geschrieben!
:p HTTP
-
Den Host-Header kann man doch auch bei HTTP 1.0 angeben?!
-
Bei mir lief es zuerst auch nicht, bis ich die
"\n\r" zu "\r\n" umgedreht hab. Dann gings.
Falls man mehrere Angaben macht (z. B. noch
"Content-Type: text/html" oder so - immer mit
"\r\n" abschließen und bei der letzten Zeile
mit "\r\n\r\n" abschließen.
-
Bei mir lief es zuerst auch nicht, bis ich die
"\n\r" zu "\r\n" umgedreht hab. Dann gings.
Falls man mehrere Angaben macht (z. B. noch
"Content-Type: text/html" oder so - immer mit
"\r\n" abschließen und bei der letzten Zeile
mit "\r\n\r\n" abschließen.
-
hey
also ich versuche das ganze auchnoch mit nem php script zu vereinen...
allerdings gelingt es mir noch nicht so ganzwenn ich
strcpy(tempo, "GET / HTTP/1.1\r\nHost: http://myserver.de/userlogin_sell.php?username=test&password=test&product=test\r\n\r\n");
sende bekomm ich auch nur ein bad seit error zurück
jemand ne idee?
-
"GET userlogin_sell.php?username=test&password=test&product=test HTTP/1.1\r\nHost: www.myhost.de\r\n\r\n"
so gehts
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Webzeugs verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.