keine statuszeile / header
Dominik
- https
Hallo Forum.
Ich bin gerade dabei mich in HTTP einzuarbeiten. Ich möchte aus Visual Basic heraus mit verschiedenen API-Calls mit Web-Servern kommunizieren. Das ganze funktioniert auch. mit send(...) schicke ich einen Anfrage an den Server und bekomme auch was zurück. Die Antwort lasse ich dann in einem Textfeld ausgeben. Leider sind die Antworten sehr mangelhaft. Ich bekommen immer nur den Body geliefert. Status-Zeile und Header werden anscheinend nicht versended.
Diese Minimalantworten erhalte ich aber generell nur, wenn ich KEINE! HTTP-Version im GET-Request mit angebe.
Bsp.:
Sieht der request so aus: GET http://www.irgendeineuri.de/index.html
bekomme ich zumindest den Body
Sieht er so aus: GET http://www.irgendeineuri.de/index.html HTTP/1.0
bekomme ich keine Antwort
Was ist da bloß los?
MfG Dominik
Hallo Dominik,
Sieht er so aus: GET http://www.irgendeineuri.de/index.html HTTP/1.0
bekomme ich keine Antwort
Natürlich nicht. Laut RFC 1945 (HTTP 1.0) bzw. RFC 2616 (HTTP 1.1) musst Du erst noch den Header beenden. Ach ja, in die GET-Zeile sollte nur der Pfad _nach_ dem Hostnamen stehen.
Beispiel:
-------------------------------
GET / HTTP/1.1
Host: www.irgendeineuri.de
-------------------------------
Oder mit HTTP 1.0:
-------------------------------
GET / HTTP/1.0
Host: www.irgendeineuri.de
-------------------------------
(hier (HTTP 1.0) wäre die Host-Angabe optional, aber Du solltest sie trotzdem angeben - Stichwort 'virtual hosts')
Ganz wichtig: die Leerzeile am Ende _muss_ sein - diese beendet nämlich _Deinen_ Header. Sonst weiß der Webserver nicht, dass Du schon fertig bist und wartet ewig - und genau das passiert bei Dir.
Du solltest Dir die RFCs noch mal zu Gemüte führen.
Grüße,
Christian
Ganz wichtig: die Leerzeile am Ende _muss_ sein - diese beendet nämlich _Deinen_ Header. Sonst weiß der Webserver nicht, dass Du schon fertig bist und wartet ewig - und genau das passiert bei Dir.
Du solltest Dir die RFCs noch mal zu Gemüte führen.
Grüße,
Christian
Vielen Dank Christian.
Jetzt krieg ich auch Status-Zeile und Header.
Das mit der Leerzeile wusste ich, aber ich hab in VB leider nur ein CrLf gemacht :) Das startet nur einen neue Zeile, gibt diese aber noch nicht als Leerzeile an.