Forum: Mikrocontroller und Digitale Elektronik Hat jemand Erfahrung mit dem lwIP HTTP Server?


von Tobias P. (hubertus)


Lesenswert?

Hallo,
im lwIP/contrib-Ordner gibts unter anderem auch den Sourcecode für einen 
HTTP-Server. Den habe ich nun hier implementiert, und er läuft auch. Die 
Website wird wie gewünscht dargestellt, alles gut soweit.
Nun möchte ich einen simplen Datei-Upload via HTTP POST realisieren. 
Leider blicke ich hier gar nicht durch, wie ich das mit diesem HTTP 
Server machen soll. Zwar gibts ein #define LWIP_HTTPD_SUPPORT_POST, das 
ich auf 1 gesetzt habe. Somit sollte HTTP POST also möglich sein. Aber 
was brauche ich noch?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Tobias Plüss schrieb:
> Aber
> was brauche ich noch?

Na jemand der den POST request bearbeitet und irgendwas mit den Daten 
anstellt...

POST != Dateiupload!

von Tobias P. (hubertus)


Lesenswert?

Ja das ist ja wohl klar ;-) Du hast dir den von mir genannten Code wohl 
nicht angesehen. Denn dort wird ersichtlich: es gibt eine 
Callback-Funktion, die angeblich laut nicht vorhandener Dokumentation 
zum genannten HTTP-Code aufgerufen werden sollte, wenn ein POST-Request 
eintrifft. Die wird aber nicht aufgerfen. Eine Analyse mit Wireshark 
zeigte dann auch warum: im HTTP POST-Request, den mein Internet Explorer 
absendet, steht drin "Content Length: 0", was definitiv falsch ist! Auf 
meiner Website ist ein simpels Formular mit

<form method="post" action="">
<input type="text" id="test" />
<input type="submit" />
</form>

Somit sollte beim Drücken des Senden-Buttons der Inhalt der einen 
Textbox im Post-Request stehen und somit "Content Length" ungleich 0 
sein. Oder nicht?

von ♪Geist (Gast)


Lesenswert?

Schaue dir die Appnote an LwIP IAP an. Dort wird lwIP verwendet mit 
einerm Http Server, um Flashfiles für IAP zu empfangen. Habe es leider 
selbst noch nicht getestet.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Tobias Plüss schrieb:
> Du hast dir den von mir genannten Code wohl
> nicht angesehen

Hättest du die relevante Codestelle verlinkt hätte ich sie mir 
sicherlich angesehen... Aber nicht jeder steckt in "deinem" Thema derat 
drinne das er mit ein paar Wortfetzen sofort alles klar ist daher:

 Problem möglichst genau beschreiben.

Das es eine Callbackfunktion nicht aufgerufen wird oder du Probleme mit 
content-length des IEs hast steht in keinem Satz erwähnt!

Tobias Plüss schrieb:
> Somit sollte beim Drücken des Senden-Buttons der Inhalt der einen
> Textbox im Post-Request stehen

Nein ist es nicht, dein Formular enthält effektiv keine Daten!
Folgendes solltest du auf jeden Fall anpassen:
- Jedes Input sollte (bis auf den Submitbutton) einen Namen erhalten 
also:
1
<input type="text" id="test" name="ein_text_feld"/>
Als Ziel/Action besser die konkrete URL angeben also z.B.
1
<form method="post" action="submit.cgi">

Allgemein haben diese Probleme aber nix mit lwIP zu tun, weswegen es 
sich anbietet erst mal ein Funktionierendes Formular mit einem 
"normalem" Webserver zu erstellen wo man einfacher debuggen kann und 
dann mit dem Funktionierendem Beispiel angeblich nicht funktionierende 
andere Module zu testen, sonst weißt du nie was nun fehlerhaft ist:
Dein Test oder das getestete Objekt.

von ♪Geist (Gast)


Lesenswert?

Ach ja, so sieht ein POST Request aus:
http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP_POST

Im Grunde wird die Länge übergeben und dann folgen die Daten. Kann man 
recht einfach verarbeiten.

von Michael N. (garril)


Lesenswert?

Läubi .. schrieb:
> - Jedes Input sollte (bis auf den Submitbutton) einen Namen erhalten
> also:<input type="text" id="test" name="ein_text_feld"/>

Was sagt Wireshark wenn du dem Formularfeld einen Namen gibst?

Läubi .. schrieb:
> Als Ziel/Action besser die konkrete URL angeben also z.B.<form method="post" 
action="submit.cgi">

Naja die Daten an die gleiche Seite zurückzusenden ohne extra-URL sollte 
eigentlich auch gehen.

Ansonsten eben mal aufm normalen Webserver testen (dann kannnste dir das 
ja auch mit Wireshark angucken)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.