Entwickler-Ecke
Internet / Netzwerk - Problem mit IdHTTP.Post()
FriFra - Mi 20.11.02 14:52
Titel: Problem mit IdHTTP.Post()
:? Ich versuche einen Request vie http.post zu versenden.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure MyPost(); var Input,Output:TStringStream; begin Input := TStringStream.Create(''); Output := TStringStream.Create(''); try Input.WriteString('RC=@D&ACCT=root&URL=MeinPasswort'); IdHTTP1.Post('http://192.168.165.1/cgi-bin/logi', Input, Output); memo1.Lines.LoadFromStream(Output); finally FreeAndNil(Input); FreeAndNil(Output); end; end; |
:idea: Das Problem ist nun, dass sich der bettr. Server dabei immer aufhängt.
:shock: Mache ich das gleiche mit einer html-Seite über den Internet-Explorer funktioniert es (HTML-Quellcode)
Quelltext
1: 2: 3: 4: 5: 6: 7:
| <HTML><BODY> <FORM ACTION=http://192.168.165.1/cgi-bin/logi METHOD=POST> <INPUT TYPE=HIDDEN NAME=RC VALUE="@D"> <INPUT TYPE=HIDDEN NAME=ACCT VALUE="root"> <INPUT TYPE=PASSWORD NAME=URL SIZE=9 MAXLENGTH=9> <INPUT TYPE=SUBMIT VALUE="Log in"></FORM> </BODY></HTML> |
:( Ich vermute, dass ich etwas grundlegendes Falsch gemacht habe, aber ich komme nicht weiter. Dadurch, dass der "angepostete" Server meine Posts nicht verkraftet hängt mein Programm nach jedem Post.
matze - Mi 20.11.02 15:08
und wenn du mal probierst das ganze per GET zu übertragen !!
da hängst du die ganzen variablen an die URL an !
FriFra - Mi 20.11.02 15:17
:!: Es muss POST sein, da der Server nur Post akzeptiert!
:x Es muss doch möglich sein irgendwie den gleichen Request abzusetzen wie es auch jeder Browser kann...
bas_gooijen - Fr 22.11.02 21:37
Versuche doch mal:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure MyPost(); var Input:TStringList; Output:TStringStream; begin Input := TStringList.Create; Output := TStringStream.Create(''); try Input.Values['RC']:='@D'; Input.Values['ACCT']:='root'; Input.Values['URL']:='MeinPasswort'; IdHTTP1.Post('http://192.168.165.1/cgi-bin/logi', Input, Output); memo1.Lines.LoadFromStream(Output); finally FreeAndNil(Input); FreeAndNil(Output); end; end; |
FriFra - Sa 23.11.02 12:35
Auch das war nicht die Lösung. Mein Server akzeptiert auch diesen Request NICHT. Es klappt nach wie vor nur über den Browser...
ao - Sa 23.11.02 13:05
Hallo FriFra,
also bei mir funktioniert folgendes einwandfrei:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var Request, Response: TStringStream; begin Request := TStringStream.Create(''); Request := TStringStream.Create('');
FIdHttp.Request.ContentType := 'application/x-www-form-urlencoded'; Request.WriteString('param1=' +UrlEncode(Trim(Param1.Text), True)); Request.WriteString('¶m2=' +UrlEncode(Trim(Param2.Text), True));
FIdHttp.Post('http://server.com/script.php', Request, Response);
[...] |
Vielleicht solltest du die Zeile mit dem ContenType bei dir ergänzen, das war mal das Problem bei mir, ist aber nur eine Vermutung!
Gruß
Andreas
FriFra - Sa 23.11.02 13:18
:cry: Ich habe jetzt auch diesen Code ausprobiert... der Effekt ist der gleiche wie immer... der Server schmiert ab...
:evil: Es muss doch verdammt nochmal möglich sein exact so einen Request wie jeder beliebige Wald und Wiesen Webbrowser das auch kann abzusetzen.
:idea: P.S.: Auf den Server habe ich keinen Einfluss, da es ein embedet Webserver in einem Router ist.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!