Dominik: keine statuszeile / header

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

  1. 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

    --
    Ich wünsche allen ein frohes neues Jahr 2003!
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
    Hmm, was könnte ich sonst noch in die Signatur schreiben?
    1. 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.