Einzelnen Beitrag anzeigen

Benutzerbild von Deltachaos
Deltachaos

Registriert seit: 20. Feb 2008
Ort: Berlin
195 Beiträge
 
Delphi 7 Personal
 
#1

Feher beim Downlord einer Datei von HTTP (Indy 9.0.19)

  Alt 28. Mär 2008, 21:11
Ich habe mir den code für den Downlord einer Datei mit der Indy Komponente von einem HTTP Server herausgesucht.

Alles schön und gut wen da nicht beim Start des Programms und nach klik auf den Button folgende Medung käme:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EIdHTTPProtocolException aufgetreten. Meldung: 'HTTP/1.1 400 Bad Request'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------


Das programm stopt hier:

Delphi-Quellcode:
function TIdHTTPProtocol.ProcessResponse: TIdHTTPWhatsNext;
  procedure RaiseException;
  var
    LRespStream: TStringStream;
    LTempStream: TStream;
    LTemp: Integer;
  begin
    LTemp := FHTTP.ReadTimeout;
    FHTTP.ReadTimeout := 2000; // Lets wait 2 seconds for any kind of content
    LRespStream := TStringStream.Create('');
    LTempStream := Response.ContentStream;
    Response.ContentStream := LRespStream;
    try
      FHTTP.ReadResult(Response);
      raise EIdHTTPProtocolException.CreateError(Response.ResponseCode, // <-- hier stopt es!
                                                 FHTTP.ResponseText, LRespStream.DataString);
    finally
      Response.ContentStream := LTempStream;
      LRespStream.Free;
      FHTTP.ReadTimeout := LTemp;
    end;
  end;
Danach läst sich das Programm nur noch mit Strg + F9 beenden.

Die Datei ist zwar da aber hat 0 KB und drin stehen tut auch nischt !

achja hier der Code von dem Programm:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stream:TFileStream;
begin
  stream:=TFilestream.create('C:\toll.txt',fmcreate );
  form1.idhttp1.host:='redplug.re.funpic.de';
  form1.idhttp1.connect;
  form1.idhttp1.Get('dlw/toll.txt',stream);
  form1.idhttp1.disconnect;
  stream.free
end;
Was ist da schon wieder Kaputt?

Benutze Indy 9.0.19
Maximilian Ruta
  Mit Zitat antworten Zitat