Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie mit Indy, HTTP, POST eine Datei Downloaden ? (https://www.delphipraxis.net/64255-wie-mit-indy-http-post-eine-datei-downloaden.html)

Blubbazisch 1. Mär 2006 13:45


Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Hi Liebe DP User,

ich habe da ein Problem mit dem ich nicht so recht weiter komme.

Alle Tutorials und Howto's die ich gefunden habe, beziehen sich auf das Posten von Dateien mit Indy.
Ich nutze Indy 9

Das habe ich ausprobiert und Funktioniert auch wunderbar.

Ich möchte aber keine Datei Posten (also senden) sondern ich möchte eine Datei zurück bekommen wenn ich
was an den Server gepostet habe.

Kann mir bitte jemand aufzeigen wie ich:

Wenn ich einen Post mit Indy abgesetzt habe, und eine Datei wieder bekomme, diese speichere ?

Für jeden Code-Schnipsel oder für jede Idee bin ich sehr Dankbar.

Danke

Mavarik 2. Mär 2006 09:57

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Schau Dir mal:

IDhttp
procedure Get(AURL: string; const AResponseContent: TStream); overload;

an...

Diese Methode speichert Dir die Datei die Du als URL angibst in einem Stream ab.

Frank :coder:

Blubbazisch 2. Mär 2006 10:54

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Hi,

wäre es möglich dafür einen Beispielcode zu bekommen ?

Ich habe noch nicht mit Streams gearbeitet.

Mavarik 2. Mär 2006 12:00

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Klar... Ganz einfach

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyStream : TFilestream;
begin
  MyStream := TFilestream.Create('c:\Test.txt',fmCreate); // oder auch "c:\index.htm"
  idhttp1.Get('http://www.mydomain.de/index.htm',MyStream);
  MyStream.Free;
end;
mfg Frank :coder:

Blubbazisch 3. Mär 2006 09:56

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Hi,

eigentlich würde ich das ganze gerne mit einem Post Befehl machen.

Ich habe dazu auch einige Lösungsansätze hier im Board und im Internet gefunden.

Ich markiere diesen Thread erstmal als erledigt bis ich das alles versucht habe umzusetzen.

Die Muhkuh 3. Mär 2006 09:59

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Ähm,

warum mit Post? Das ist sehr unlogisch.

Mit Post kloppst du was ins Internet und mit Get holst du was raus, dass is ja das was du brauchst.

Blubbazisch 3. Mär 2006 10:03

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Hi,

nein nicht ganz.

Ich Poste zum Beispiel Benutzername und Passwort an eine Seite und bekomme dafür als Response eine Datei wieder.

Mit der GET Methode kann ich kein "Formular Post" nachahmen.

Die Muhkuh 3. Mär 2006 10:08

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
OK, da haste auch wieder recht ;-)

Dann sollte das so funktionieren.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyStream : TFilestream;
  Data: TIdMultiPartFormDataStream;
begin
  MyStream := TFilestream.Create('c:\Test.txt',fmCreate);

  Data := TIdMultiPartFormDataStream.Create;
  Data.AddFormField('name', 'Max Mustermann'); // Hier kannst du deine Formdaten einfügen
  Data.AddFormField('blubb', '><(((°>'); //      ^^  ^^  ^^
  Data.Position := 0;
 
  idhttp1.Post('http://www.mydomain.de/index.htm',MyStream);
  MyStream.Free;
  Data.Free;
end;

Blubbazisch 3. Mär 2006 10:21

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Hi,

gesagt getan.

Delphi macht zwar eine Datei die sich Test.txt nennt. Schreibt da aber nix rein.

Hier mein Code, ich Poste an meine eigene Seite wo ich weiss das ich da was wieder bekomme.

Delphi-Quellcode:
var
  MyStream : TFilestream;
  Data: TIdMultiPartFormDataStream;
begin
  MyStream := TFilestream.Create('c:\Test.txt',fmCreate);

  Data := TIdMultiPartFormDataStream.Create;
  Data.AddFormField('q', 'test'); // Hier kannst du deine Formdaten einfügen
  Data.Position := 0;

  idhttp1.Post('http://www.preis-o-mat.de/search.php',MyStream);
  MyStream.Free;
  Data.Free;
end;
Er müsste ja theoretisch, alles das was wieder kommt in die Datei rein schreiben ?

Die Muhkuh 3. Mär 2006 10:27

Re: Wie mit Indy, HTTP, POST eine Datei Downloaden ?
 
Arg sorry, mein Fehler.

Es muss so heißen:

Delphi-Quellcode:
idhttp1.Post('http://www.preis-o-mat.de/search.php', {!}Data, MyStream);
Hatte das Data vergessen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr.

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