HTTP-Request C++



  • Hallo,

    ich bin auf der suche nach einem Snippet für einen HTTP-Request in C++. Ich wäre euch sehr dankbar wenn mir jemand so ein Snippet oder auch eni LInux zu einem Tutorial für WebRequest in C++ geben könnte.

    So weit ich das verstenden habe stelle ich einfach eine TCP-Verbindung zu der Homepage her und Sende ihr GET/ index.html HTML/1.0 danach lese ich alles in einen Buffer und habe den HTML-Code der seite. Oder liege ich da falsch?

    Grüße



  • Da liegst du fast richtig.
    Du baust per connect() eine TCP-Verbindung auf und sendest:
    "GET /index.html HTTP/1.1\r\n\r\n". Danach empfängst mit recv() du sowas wie:
    "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: XXX\r\nServer: XXX\r\n\r\n<html>...</html>"



  • Oder du benutzt libcurl und brauchst dich darum gar nicht kümmern und bist sogar plattformunabhängig.



  • hjkhjk schrieb:

    Oder du benutzt libcurl und brauchst dich darum gar nicht kümmern und bist sogar plattformunabhängig.

    Und hast dann das Problem nix von HTTP verstanden zu haben.

    Bei codeproject.com findest du Beispiele. Nicht alle sind genial, aber für einen Anfang sollte es reichen.

    Kommt eben auf deinen Ansatz an: Verstehen oder nur benutzen.



  • Anders: "Verstehen oder _auch_ benutzen", nicht "verstehen oder nur benutzen". 🙂



  • NEO_2.0 schrieb:

    So weit ich das verstenden habe stelle ich einfach eine TCP-Verbindung zu der Homepage her und Sende ihr GET/ index.html HTML/1.0 danach lese ich alles in einen Buffer und habe den HTML-Code der seite. Oder liege ich da falsch?

    // Auf Port 80 verbinden
    "GET / HTTP/1.0\r\n"
    "Host: irgendeineseite.com\r\n"
    "\r\n" // <-- Senden
    // Empfangen bis die Verbindung abbricht.
    

    Hilft dir das?



  • Schau doch mal hier rein:
    http://www.c-plusplus.net/forum/169861



  • Implementiere http nicht selbst! HTTP kann einiges an Transport-Encodings, Kompression etc. Das alles zu implementieren ist sehr müselig und das fehlerfrei hinzubekommen ist noch schwieriger. Es gibt schon genug kaputte HTTP-Implementierungen da draussen!

    Also nimm lieber libcurl. Wenn man sich mal HTTP anschauen will, dann kann man den GET-Request auch mit nc oder telnet senden.


Anmelden zum Antworten