Autor |
Beitrag |
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Mi 20.11.13 00:38
Hallo,
bitte "schlagt" mich nicht, aber bei allem, das mit Internet zu tun hat, bin ich blutiger Anfänger und stochere eigentlich nur in der Materie.
Ich habe mit den Indy-Komponenten versucht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.Button9Click(Sender: TObject); var idhttp1:tidhttp; datei:tfilestream; begin IdHttp1:=tidhttp.create; try try Datei:=TFileStream.create('test.pdf',fmCreate); IdHttp1.Get('http://www.kepler.c.sn.schule.de/subj/MA/12Ma4/lk01_b.pdf',Datei); finally Datei.free; end;
try Datei:=TFileStream.create('test.txt',fmCreate); IdHttp1.Get('https://skydrive.live.com/redir?reD890F982C539013!105/test.txt',Datei); finally Datei.free; end;
finally IdHttp1.free; end; end; |
Die erste Datei wird problemlos geladen. Bei der zweiten kommt die Fehlermeldung "IO Handler is not valid", was ich nicht verstehe.
Die extrem lange Adresse ist die öffentliche Adresse, "https://skydrive.live.com/redir?reD890F982C539013!105" unter der die Datei test.txt als vorhanden angezeigt wird.
Was mache ich schon wieder falsch?
Beste Grüße
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
FinnO
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 20.11.13 00:48
Du musst Skydrive nicht auf die komplizierte Tour übers User-Interface verwenden, sondern kannst auch über die dazugehörige API etwas komfortabler darauf zugreifen.
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Mi 20.11.13 00:51
Hallo,
FinnO hat folgendes geschrieben : | Du musst Skydrive nicht auf die komplizierte Tour übers User-Interface verwenden, sondern kannst auch über die dazugehörige API etwas komfortabler darauf zugreifen. |
Danke für den Hinweis. Den angegebenen Text muss ich erst einmal verarbeiten.
Im Moment verstehe ich so gut wie nichts.
Beste Grüße
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 20.11.13 01:53
skydrive.live.com/re...C539013!105/test.txt
ist nicht mehr vorhanden oder nicht verfügbar...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function DownLoadInternetFile(const SourceUrl, DestFilename : String): Boolean; const S_OK = 0; begin Result := URLDownloadToFile(nil,PChar(SourceUrl),PChar(DestFilename),0,nil) = S_OK; end;
procedure TForm1.Button1Click(Sender: TObject); var fn : String; begin fn:='http://www.kepler.c.sn.schule.de/subj/MA/12Ma4/lk01_b.pdf'; if DownLoadInternetFile(fn, 'D:\lk01_b.pdf') then ShowMessage('Download ok');
fn:='https://skydrive.live.com/redir?reD890F982C539013!105/test.txt'; if DownLoadInternetFile(fn, 'D:\test2013.txt') then ShowMessage('Download ok'); end; |
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Mi 20.11.13 08:05
Hallo,
Danke für den Hinweis.
Die erste Datei wird wieder problemlos geladen. Gleichgültig, welche Adresse ich bei der 2. eingebe, geht es nicht.
Die Datei ist im IE sichtbar, bei meinem Download-Versuch nicht mehr. Irgendetwas stimmt mit den Rechten nicht.
Lustig ist, dass ich einmal (nicht reproduzierbar) eine Datei bekam, nur nicht meine, sondern eine, mit der ich in meinen privaten(!) Skydrive-Bereich gelange.
Und schon habe ich wieder ein neues Verständnisproblem. Ich beende erst einmal die Versuche, von Skydrive was zu lesen, lege die Datei auf den Schulserver und weiß, dass es dort problemlos funktioniert.
Danke und beste Grüße
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
jaenicke
Beiträge: 19286
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 20.11.13 09:36
Um https nutzen zu können, muss auch der passende IO Handler da sein, deshalb auch die Fehlermeldung. Konkret musst du dir dafür einen IO Handler vom Typ TIdSSLIOHandlerSocketOpenSSL nehmen und in deiner TIdHttp Komponente zuweisen. Den kannst du auf dein Formular bzw. besser Datenmodul packen. Dazu brauchst du dann noch die OpenSSL DLLs.
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Mi 20.11.13 10:49
Hallo jaenicke,
jaenicke hat folgendes geschrieben : | Um https nutzen zu können, muss auch der passende IO Handler da sein, deshalb auch die Fehlermeldung. ... |
Jetzt habe ich es verstanden, warum es gar nicht so einfach gehen kann.
Ich hätte vielleicht vorher mal ( de.wikipedia.org/wik...sfer_Protocol_Secure) lesen sollen.
Aus diesem Grund werde ich auch (vorerst) aufgeben. Das übersteigt meine Möglichkeiten im Moment. Irgendwann wird's auch noch.
Beste Grüße und Danke
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
jaenicke
Beiträge: 19286
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 20.11.13 11:34
Das ist nicht schwer, ich habe die beiden notwendigen Schritte doch schon genannt...
- Den TIdSSLIOHandlerSocketOpenSSL aufs Formular legen oder manuell erzeugen und der Eigenschaft IOHandler von deiner TIdHttp Komponente zuweisen
- Die DLLs holen, z.B. von hier:
indy.fulgan.com/SSL/....0.1e-i386-win32.zip
Das war es auch schon...
Für diesen Beitrag haben gedankt: Mathematiker
|
|
|