Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: 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:
ausblenden 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);
        //IO Handler is not valid
      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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 20.11.13 00:51 
Hallo,
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
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



BeitragVerfasst: Mi 20.11.13 01:53 
skydrive.live.com/re...C539013!105/test.txt
ist nicht mehr vorhanden oder nicht verfügbar...

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 20.11.13 10:49 
Hallo jaenicke,
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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. :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

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 20.11.13 11:34 
Das ist nicht schwer, ich habe die beiden notwendigen Schritte doch schon genannt...
  1. Den TIdSSLIOHandlerSocketOpenSSL aufs Formular legen oder manuell erzeugen und der Eigenschaft IOHandler von deiner TIdHttp Komponente zuweisen
  2. 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