evelyne: HTTP-request for a rss feed

Hallo,

Ich implementiere einen Socket in C für ein rss feed http request. Die URL des RSS feed ist http://www.nichtlustig.de/rss/nichtrss.rss

dabei benutze ich den command:

GET /rss/nichtrss.rss HTTP/1.1\r\n\r\n

hostname ist dabei: www.nichtlustig.de

ich bekomme die fehlermeldungen wie:

HTTP/.1 400 Bad Request
client sent HTTP/1.1 request without hostname

Die hostname ist ja schon mitgeschickt wurde. deshalb verstehe ich die fehlermeldungen nicht. ich wäre froh wenn jemand mir da helfen könnte?

vielen dank im voraus
evelyne

  1. Hallo,

    GET /rss/nichtrss.rss HTTP/1.1\r\n\r\n
    HTTP/.1 400 Bad Request
    client sent HTTP/1.1 request without hostname

    Die hostname ist ja schon mitgeschickt wurde. deshalb verstehe ich die fehlermeldungen nicht. ich wäre froh wenn jemand mir da helfen könnte?

    HTTP/1.1 schreibt vor, dass Du einen Host-Header mitsenden musst (damit werden VirtualHosts realisiert, eine Socketverbindung ist nämlich immer auf IP-Ebene und ohne den Header hat ein HTTP-Server keine Chance, herauszufinden, welchen Host der Client gemeint hat, bei VirtualHosts zeigen nämlich mehrere Hostnamen auf die gleiche IP) - und Du tust dies eben nicht.

    Sende folgenden String:

    GET /rss/nichtrss.rss HTTP/1.0\r\nHost: www.nichtlustig.de\r\n\r\n

    Ich würde Dir vor allem deswegen HTTP/1.0 und nicht HTTP/1.1 vorschlagen, weil Du Chunked verstehen können musst, wenn Du einen HTTP/1.1-Request stellst.

    Ansonsten empfehle ich Dir einfach mal, die entsprechenden Standards zu lesen:

    * RFC 1945: HTTP/1.0
     * RFC 2616: HTTP/1.1
     * RFC 2617: HTTP/1.1 Authentication

    Übrigens: Für C gibt es etliche platformübergreifende frei verwendbare Bibliotheken, mit denen man HTTP-Anfragen stellen kann - warum willst Du das eigentlich nachimplementieren?

    Viele Grüße,
    Christian

    1. Hallo Christian

      vielen dank für deine email. ich werde es mal probieren.
      viele grüsse
      evelyne

      Hallo,

      GET /rss/nichtrss.rss HTTP/1.1\r\n\r\n
      HTTP/.1 400 Bad Request
      client sent HTTP/1.1 request without hostname

      Die hostname ist ja schon mitgeschickt wurde. deshalb verstehe ich die fehlermeldungen nicht. ich wäre froh wenn jemand mir da helfen könnte?

      HTTP/1.1 schreibt vor, dass Du einen Host-Header mitsenden musst (damit werden VirtualHosts realisiert, eine Socketverbindung ist nämlich immer auf IP-Ebene und ohne den Header hat ein HTTP-Server keine Chance, herauszufinden, welchen Host der Client gemeint hat, bei VirtualHosts zeigen nämlich mehrere Hostnamen auf die gleiche IP) - und Du tust dies eben nicht.

      Sende folgenden String:

      GET /rss/nichtrss.rss HTTP/1.0\r\nHost: www.nichtlustig.de\r\n\r\n

      Ich würde Dir vor allem deswegen HTTP/1.0 und nicht HTTP/1.1 vorschlagen, weil Du Chunked verstehen können musst, wenn Du einen HTTP/1.1-Request stellst.

      Ansonsten empfehle ich Dir einfach mal, die entsprechenden Standards zu lesen:

      * RFC 1945: HTTP/1.0
      * RFC 2616: HTTP/1.1
      * RFC 2617: HTTP/1.1 Authentication

      Übrigens: Für C gibt es etliche platformübergreifende frei verwendbare Bibliotheken, mit denen man HTTP-Anfragen stellen kann - warum willst Du das eigentlich nachimplementieren?

      Viele Grüße,
      Christian