Entwickler-Ecke
Internet / Netzwerk - Skydrive und IdHttp.get
Mathematiker - Mi 20.11.13 00:38
Titel: Skydrive und IdHttp.get
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
Mathematiker - Mi 20.11.13 00:51
Hallo,
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
Delete - Mi 20.11.13 01:53
https://skydrive.live.com/redir?reD890F982C539013!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; |
Mathematiker - 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
jaenicke - 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.
Mathematiker - 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 (
http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure) lesen sollen. :autsch:
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
jaenicke - 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:
http://indy.fulgan.com/SSL/openssl-1.0.1e-i386-win32.zip
Das war es auch schon...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!