Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UrlDownloadToFile - Problem (https://www.delphipraxis.net/9795-urldownloadtofile-problem.html)

moritz 4. Okt 2003 14:04


UrlDownloadToFile - Problem
 
Hallo

Ich hab ein Problem mit der Funktion UrlDownloadToFile. Ich versuche, eine Google-Seite auszulesen:
Delphi-Quellcode:
UrlDownloadToFile(nil,PChar('http://www.google.de/search?hl=de&q=Delphi'),PChar('C:\google.html'),0,nil);
Nur läd er mir die Datei nicht herunter. Bei normalen .php oder .html usw.-Dateien ( :zwinker: ) geht es :gruebel:
Ich habe schon überlegt, Indy zu benutzen. Das will ich aber nicht, das Programm wird dann imer so groß.
Zur Not mach ich das natürlich, aber erstmal suche ich die Lösung dafür. Kennwot die irgendwer?

Blast! Onz :hi:

Mirilin 4. Okt 2003 14:29

Re: UrlDownloadToFile - Problem
 
:hi: Onz

ist zwar anders, aber ich konnte deinen link laden...

swiss-delphi-center-tipp-mit-nmhttp

moritz 4. Okt 2003 14:32

Re: UrlDownloadToFile - Problem
 
Hallo

Welchen Use brauche ich für NmHTTP?

Blast!

moritz 4. Okt 2003 14:34

Re: UrlDownloadToFile - Problem
 
Ach, noch was:
Ich würde gerne auf den Einsatz eine Komponente verzichten.

Luckie 4. Okt 2003 14:40

Re: UrlDownloadToFile - Problem
 
Du brauchst die Fastnet Komponenten. Bei D5 waren sie noch als Internet-Komponeneten dabei. Es gibt aber die gleiche Komponenete auch von den Indys.

moritz 4. Okt 2003 14:41

Re: UrlDownloadToFile - Problem
 
Wie gesagt, ich würde gerne auf den Einsatz von Komponenten verzichten. Gibt es denn sonst keine Lösung?

Luckie 4. Okt 2003 14:43

Re: UrlDownloadToFile - Problem
 
Es wird wohl nicht gehen, weil diu keine direkte Datei angegeben hast, sondern nur ein Script mit Prametern aufgerufen hast.

moritz 4. Okt 2003 14:46

Re: UrlDownloadToFile - Problem
 
Also wohl oder übel doch Indy.... :|

Christian Seehase 4. Okt 2003 14:49

Re: UrlDownloadToFile - Problem
 
Moin Onz,

Du kannst Dir ja dann in den Sourcen der Indys ansehen wie die es machen, und damit ermitteln welchen APIs usw. Du brauchst.

moritz 4. Okt 2003 14:50

Re: UrlDownloadToFile - Problem
 
Hallo

Ich schau mal... :cyclops:

Chewie 4. Okt 2003 15:35

Re: UrlDownloadToFile - Problem
 
Oder du implementierst den GET-Aufruf selber mit einem normalen ClientSocket (bzw. mit der Socket-API).

moritz 4. Okt 2003 16:03

Re: UrlDownloadToFile - Problem
 
Naja, dann werde ich es wohl mit Indy machen :) Außer irgendwer findet noch ein Lösung... :gruebel:

Chewie 4. Okt 2003 16:23

Re: UrlDownloadToFile - Problem
 
Du suchst dir das RFC für HTTP raus, erstellst eine TCP-Verbindung zum Server und sendest zunächst die Header-Daten. Dann führst du einen GET-Befehl aus, in dem die angeforderte Seite steht, anschließend speicherst du das, was du empfängst, in einer Datei.
Ist natürlich komplizierter als eine fertige Lösung, zumal du dich zusätzlich erst noch mit dem HTTP-Protokoll vertraut machen musst (sofern du das nicht schon vorher wusstest).

moritz 4. Okt 2003 17:17

Re: UrlDownloadToFile - Problem
 
Ok, ich hab das ganze mal versucht. Aber ich bekomme keine Antwort. Was mache ich falsch?
(Ich habe eine Variable Client vom Typ TClientSocket)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Client:=TCLientSocket.Create(Form1);
    Client.OnConnect:=OnSocketConnect;
    Client.OnError:=OnSocketError;
    Client.OnDisconnect:=OnSocketDisconnect;
  Client.OnRead:=OnSocketRead;
  Client.Port:=80;
  Client.Host:='google.de';
  Client.Open;
end;

procedure TForm1.OnSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  showmessage('Erfolgreich verbunden');
end;

procedure TForm1.OnSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  showmessage('Verbindung wurde getrennt');
end;

procedure TForm1.OnSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  showmessage('Folgender Text wurde empfangen');
  showmessage(Socket.ReceiveText);
end;

procedure TForm1.Button1Click(Sender: TObject);
 begin
  showmessage('GET /index.html HTTP/1.1'+#13#10+'Host: google.de');
  Client.Socket.SendText('GET /index.html HTTP/1.1'+#13#10+'Host: google.de');
end;

procedure TForm1.OnSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  showmessage('Ein Fehler ist aufgetreten');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Client.Active then showmessage('Client ist aktiv');
end;
Onz, :wiejetzt:

Chewie 4. Okt 2003 17:21

Re: UrlDownloadToFile - Problem
 
Ich kenn mich leider nicht genug mit dem HTTP-Protokoll aus, um dir das zu sagen, abber ich kann dir folgenden Tipp geben:

Besorg dir Bei Google suchenPutty, mit dem erstellst du eine Verbindung zum Server und kannst dann mal die Befehle per Hand eingeben (und die Rückmeldungen lesen). So kriegst du raus, welche Angaben (evtl. noch den HTTP-Header) du noch mitschicken musst. Wenn du alles zusammen hast, kannst du die Befehle in dein Programm einfügen.

moritz 4. Okt 2003 17:39

Re: UrlDownloadToFile - Problem
 
Hmm...Putty geht bei mir komsicherweise nicht. Er verbindet nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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