HTTP Formulardaten verschicken in C

Hallo C-Experten!

Ich möchte aus einem C-Programm Formulardaten via HTTP an einen Webserver schicken(!).
Kennt jemand von Euch einen Quellcode, in dem das schon einmal realisiert wurde?
Im Netscape Sourcecode findet sich das mit Sicherheiet, nur ist mir der ein wenig zu unhandlich :wink:
Bei http://www.codeguru.com bin ich leider nicht fündig geworden.

CU
Markus

Hi Markus!

Falls du die Seite, deren Formular du verschicken willst genau kennst, ist das relativ einfach ( wenn man weiß, wie man mit Sockets umgeht :wink:)

  1. Socket erstellen
  2. Zur IP (und wohl Port 80) connecten
    …und dann (HTTP-Konform)
  3. die Formulardaten rausschicken, so wie das auch der Browser machen würde, also z.B.
    „GET /form.html&name=blubb&mail=[email protected] HTTP/1.0\r\n\r\n“
    oder:
    „POST /form.html HTTP/1.0\r\nContent-Length:25\r\n\r\nname=blubb\r\nmail=[email protected]\r\n\r\n“

Ich hoffe das war jetzt Http-Technisch korrekt :wink:

HTH

  1. Socket erstellen
  2. Zur IP (und wohl Port 80) connecten
    …und dann (HTTP-Konform)
  3. die Formulardaten rausschicken, so wie das auch der Browser
    machen würde, also z.B.
    „GET /form.html&name=blubb&mail=[email protected] HTTP/1.0\r\n\r\n“
    oder:
    „POST /form.html
    HTTP/1.0\r\nContent-Length:25\r\n\r\nname=blubb\r\nmail=[email protected]\r\n\r\n“

Ich hoffe das war jetzt Http-Technisch korrekt :wink:

Hallo Johannes!

Vielen Dank für Deine prompte Antwort. Jetzt weiss ich schon einmal, wo ich die URL des empfangenden CGI-Skripts unterbringen muß. Das Verschicken der Formularfelder gestaltet sich in diesem Fall aber vermutlich etwas komplizierter:
In dem betreffenden Formular ist ein Input-Field vom Typ „File“ enthalten. Habe in der RFC1867 nachgelesen (Form-based File Upload in HTML). Die Kodierung der zu übertragenden Datei ist mir jedoch nicht ganz klar geworden:

  • Müssen die Binärdaten zuvor noch irgendwie umkodiert werden?
  • Ich muß doch sicherstellen, daß die notwendige Boundary für „multipart/form-data“ nicht in den zu versendenden Daten auftaucht!?
  • Wie lang darf die versendete Datei sein (Grenze bei 64kB?)?

CU
Markus

Vielen Dank für Deine prompte Antwort. Jetzt weiss ich schon
einmal, wo ich die URL des empfangenden CGI-Skripts
unterbringen muß. Das Verschicken der Formularfelder gestaltet
sich in diesem Fall aber vermutlich etwas komplizierter:
In dem betreffenden Formular ist ein Input-Field vom Typ
„File“ enthalten. Habe in der RFC1867 nachgelesen (Form-based
File Upload in HTML). Die Kodierung der zu übertragenden Datei
ist mir jedoch nicht ganz klar geworden:

  • Müssen die Binärdaten zuvor noch irgendwie umkodiert
    werden?
  • Ich muß doch sicherstellen, daß die notwendige Boundary für
    „multipart/form-data“ nicht in den zu versendenden Daten
    auftaucht!?
  • Wie lang darf die versendete Datei sein (Grenze bei 64kB?)?

CU
Markus

Sorry, ein ‚File-Inputtype‘ ist mir noch nicht über den Weg gelaufen, aber bei Forms, die ich auf anhieb nicht aus dem HTML-Code verstehe wende ich einen zugegebenermaßen recht plumpen Trick an:

  1. Seite downloaden und die Zieladresse in die eigene IP (127.0.0.1) ändern

  2. Ein ‚Echo-Programm‘ starten und sich dann einfach in aller Ruhe ansehen, was der Browser eigentlich genau rausgeschickt hat

  3. Das Form kann man dann schön ‚reverse-engeneeren‘ :wink:

HTH