Moin die Herren,
nachdem ich hier schon einiges gelesen habe, hab ich meine httppost routine ein wenig umgeschrieben, um Fehler (oder besser die Eigenheiten von Indy10) besser abfangen zu können. Die Daten kommen wohl auf dem Zielserver einwandfrei an, jedoch bekomme ich immer ein Connection Time Out
Delphi-Quellcode:
rkSendFile :
begin
sTmpFilename := frmmain.betreuung_dossier.text;
self.Caption := '
Versende Anhänge';
if ghttps_aus
then sURL := '
http://.......'
else sURL := '
https://.......;
httpcon.IOHandler := frmmain.IdSSLIOHandlerSocketOpenSSL1;
strLParam.Add('type=7'
);
strLParam.Add('code='
+fUsercode);
strLParam.Add('pwd='
+fPWD);
strLParam.Add('
xml='
+gxml);
strLParam.Add('pdf='
+gpdf);
strLParam.Add('zip=true'
);
strLParam.Add('file='
+sTmpFilename);
strLParam.Add('message='
+gmessage);
_sstream := Tstringstream.create(''
);
someError := false;
repeat
try
HttpCon.ConnectTimeout := 20000;
HttpCon.Post(sURL,strLParam,_sstream);
HttpCon.Disconnect;
sFileData := _sStream.DataString;
freeandnil(_sstream);
Xml := TSimploXML.Create(nil);
Xml.LoadFromstring(sFileData);
// XML - auswerten
fehlercode := strtoint(Xml.Root.ElementsByName('ERROR'
)[0].ElementsByName('CODE'
)[0].Text);
fehlertext := Xml.Root.ElementsByName('ERROR'
)[0].ElementsByName('TEXT'
)[0].Text;
FreeAndNil(xml);
except
On E: EIdConnClosedGracefully do
begin
SomeError := false;
end;
On E: EIdHTTPProtocolException do
begin
SomeError := E.ErrorCode <> 302;
fehlercode := E.ErrorCode;
fehlertext := E.ErrorMessage;
if fehlercode = 0 then SomeError := false;
end;
On E: EIdException do
begin
SomeError := true;
end;
else
// raise;
showmessage('Fehler beim Versand'
+#10#13+
'Code: '
+inttostr(fehlercode)+', '
+fehlertext+#10#13
+'Bitte noch einmal versuchen oder FinanzDesk kontaktieren'
);
end;
until SomeError;
if not SomeError then showmessage('Ihr Antrag wurde verschickt'
)
end;
close;
Korrektur: Es kommt die Meldung: Read Timeout
Wer hat ne Idee?
Gruss
EL