Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi indy http.Post problem (https://www.delphipraxis.net/69850-indy-http-post-problem.html)

easteregg 21. Mai 2006 00:01


indy http.Post problem
 
heyho.

für meinen client (siehe projekt ->signatur) nutze ich die indykomponente idHtttp.Post
die funktioniert an sich auch gut und sendet die daten via post an meinen server.

nur nach einer gewissen zeit (so ca. 100-300 aufrufe) verweigert sie immer den dienst.



Delphi-Quellcode:
procedure tform1.senddata;
var
  data: TIdMultiPartFormDataStream;
  pass : MD5Digest;
  reply :string;
begin
 zeile[1] := daten[cbline1.itemindex];
 zeile[2] := daten[cbline2.itemindex];
 zeile[3] := daten[cbline3.itemindex];
 zeile[4] := daten[cbline4.itemindex];
 zeile[5] := daten[cbline5.itemindex];
     if edit_user.text = '' then
                              begin
                                  reply:='Keine Userdaten eingetragen';
                              end
     else
      begin
         IdHTTP1.Request.UserAgent:='siginfo client ' + version + '(user: ' + edit_user.text + ')';
         data := TIdMultiPartFormDataStream.Create;
         //passwort auslesen und in md5
         pass := md5.MD5String(edit_pass.text);
        try
         { POST daten erstellen }
         data.AddFormField('user', edit_user.text);
         data.AddFormField('pass', md5.MD5Print(pass));
         data.AddFormField('zeile1', zeile[1]);
         data.AddFormField('zeile2', zeile[2]);
         data.AddFormField('zeile3', zeile[3]);
         data.AddFormField('zeile4', zeile[4]);
         data.AddFormField('zeile5', zeile[5]);
         data.AddFormField('lastupdate', datetostr(date) +', '+ timetostr(gettime));
         data.AddFormField('version', version);
         data.Position:=0;
              try
                reply := IdHTTP1.Post(server, data);
              except
                reply := 'Server Timeout';

              end;
        finally
          data.free;
        end;
     end;
 Log.Lines.add (timetostr(gettime) + ': ' + reply);
 statusbar1.Panels[1].Text:=reply;
 statusbar1.Panels[0].Text:=timetostr(gettime);
end;
so sieht meine procedure zum daten senden erstmal aus.

wenn der server nicht erreichbar ist, schreibt er ja "server timeout" in den antwortstring rein.
aber trotz verbindung zum server (localhost zur zeit noch) bringt er mir immer "timeout".
erst wenn ich das programm neu starte, ist dieser fehler vorbei.

wie kann ich das beheben und vorallem - woran liegt das?

Klaus01 21. Mai 2006 10:22

Re: indy http.Post problem
 
Guten Morgen,

kannst Du in Erfahrung bringen, welche Exception ausgeworfen wird.

Dein Code wirft bei jedweder Exception als reply "Server Timeout" aus.

Delphi-Quellcode:
       
try
  reply := IdHTTP1.Post(server, data);
except
  reply := 'Server Timeout';
Grüße
Klaus

easteregg 21. Mai 2006 11:19

Re: indy http.Post problem
 
ich hab das bis jetzt noch nicht in der bsd bekommen, diesen fehler.

aber so im schlaf hab ich mir überlegt, ich kann mir doch eigentlich die try finally sparen oder?
ich brauch ja nur das senden abfangen!

Klaus01 21. Mai 2006 11:21

Re: indy http.Post problem
 
sehe ich auch so

Grüße
Klaus

easteregg 21. Mai 2006 11:32

Re: indy http.Post problem
 
so ich werd mal schauen ob sich das problem damit schon erledigt hat ;)

easteregg 21. Mai 2006 19:07

Re: indy http.Post problem
 
also es kam erneut nach dem 546 update....
dann musst ich das programm neu starten und schon gings wieder.

ich schau jetzt mal was genau für ein fehler kommt wenn ich das in der IDE laufen lasse.

aber das kann dauern bin das wieder auftritt

easteregg 22. Mai 2006 06:38

Re: indy http.Post problem
 
---------------------------
Debugger Exception Notification
---------------------------
Project siginfo.exe raised exception class EIdSocketError with message 'Socket Error # 10054
Connection reset by peer.'.
---------------------------
Break Continue Help
---------------------------


aber die seite mit dem script ist einwandfrei erreichbar. (wie gesagt local host...)
aber er hat mir auch keine fehler in der componente selbst gebracht.

kann ich die irgendwie dynamisch erstellen bevor ich die daten sende?
und anschliesend eben wieder schliesen? (also die idhttp componente)

Klaus01 22. Mai 2006 06:42

Re: indy http.Post problem
 
keine Ahnung obdas hilft, aber kannst ja mal schauen -> http://forum.dsdt.info/viewtopic.php...42f2a39c4e887d
oder hier -> http://groups.google.de/group/borlan...52d0c222630e42

Grüße
Klaus

Angel4585 22. Mai 2006 07:41

Re: indy http.Post problem
 
In welchen Abständen führst du diese Prozedur aus?

easteregg 22. Mai 2006 11:00

Re: indy http.Post problem
 
wahlweise in 30 bzw 60 sekunden abständen.
aber mit timeout zeiten sollte das ja kein problem geben, da die abfrage an localhost gesendet wird!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz