AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei runterladen und dabei IE-Cockies verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Datei runterladen und dabei IE-Cockies verwenden

Ein Thema von himitsu · begonnen am 18. Jul 2007 · letzter Beitrag vom 14. Feb 2022
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#1

Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 15:23
tachchen ^^


also, ich würde gern eine Datei runterladen und beim Anfordern der Datei die zur URL gültigen Cockies mitsenden, welcher im Internet Explorer gespeichert sind.

Grund ist, daß zum Runterladen das Session-Cockie benötigt wird und ich das Login zur Webseite nicht mit in das Programm integrieren möchte, sondern daß das Einloggen immernoch im "normalen" Browser bleibt.

Ideal wäre es auch, wenn ein eventuell geändertes Cockie (von der Webseite geändert) entsprechend im IE abgespeichert wird.
(dieses ist aber nicht unbedingt nötig, da für diesen Fall eine andere Lösung bestünde)


gibt es da eine Möglichkeit für D7(incl INDY) + JEDI?


[add]
ach ja, derzeit lade ich die Datei über TWebbrowser runter, da diese eh im Programm verwendet wird,
aber erstens ist dieser Weg nicht grad schnell/optimal und dann sieht man den Dateiinhalt (.txt) kurz im TWebbrowser.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#2

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 15:24
Mir würde nur einfallen das Das Cookie per Proxy mitschneiden.

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#3

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 15:46
na ja, es muß ja irgendwie möglichsein die Cockies direkt vom IE zu erfragen ... die temprären Dateien kann man ja auch erfragen und ändern.

und es muß nicht unbedingt sein, daß die Seite grade im IE geladen wird/wurde.
unter umständen kann es auch sein, daß für die Seite ein autologin eingerichtet wurde, was aber nicht immer de Fall ist.

da TWebbrowser ja den IE kapselt und somit automatisch dessen Cockies verwendet, läuft dieses erstmal von der gewünschten Funktion her nicht schlecht, aber eben nicht optimal.
Delphi-Quellcode:
  Function TForm1.DownloadFile(Const URL: String): String;
    Var D: TDateTime;

    Label NeuStart;

    Begin
      Try
        NeuStart:
        //WebBrowser1.Stop;
        D := Now;
        WebBrowser1.Tag := 0;
        WebBrowser1.Navigate(URL);
        While WebBrowser1.Tag = 0 do Begin
          If Application.Terminated Then Begin
            Result := '';
            Exit;
          End;
          If Now - D > 1/24/60/60*30 Then Begin
            WebBrowser1.Navigate('');
            Application.ProcessMessages;
            Sleep(100);
            Goto NeuStart;
          End;
          Application.ProcessMessages;
          Sleep(25);
        End;
        Result := (WebBrowser1.Document as IHTMLDocument2).body.outerHTML;
        //WebBrowser1.Navigate('');
      Except
        Result := '';
        Application.MessageBox(PChar(Exception(ExceptObject).Message),
          PChar(Caption + ' - Programmfehler'), MB_OK);
        Application.Terminate;
      End;
    End;

  Procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; Const pDisp: IDispatch;
    Var URL: OleVariant);

    Begin
      If TWebBrowser(Sender).Tag = 0 Then TWebBrowser(Sender).Tag := 1;
    End;
mir wäre es da lieber, wenn es schneller ginge und nicht die Datei erst angezeigt werden müßte.
es sieht blöd aus, wenn die Anzeige 'ne weile verschwindet, dafür dann die runterzuladene Datei angezeigt wird und dann muß die alte Anzeige wieder neu zusammengestellt werden.
außerdem ist es möglich, wärend die Datei geladen wird (da die auch nicht immer klein ist und das Internet hier am testrechner nicht grade schnell), daß man als User da in den Download eingreifen kann ... mit IE-Popup und auch über die Tastatur kann TWebbrowser ja auch gesteuert werden.
ESC=Download abbrechen
Backspace=Seite zurück (vorherige Seite laden)
usw.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 16:50
Und wenn du direkt den IE verwendest?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 17:04
klar ginge das, aber ich brauch den Dateiinhalt ja im Programm.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 17:08
Ja ich meinte den IE als Downloadkomponente (TWebBrowser oder ferngesteuert)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#7

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 17:59
den TWebbrowser nehm ich ja schon, allerdings ist dieses nicht grad ein optimaler Weg.

besser wäre sowas:
  • Cockie aus dem IE auslesen
  • datei runterladen und im String speichern
    z.B. mit INDY/JEDI ... irgendwie soll man da ja die Cockies angeben können
  • eventuell empfanges Cockie wieder im IE speichern


hab jetzt auch schon 2 weiter Varianten zum Runterladen einer Datei
und bei Ersterem mit INDY soll man so angeblich ein Cockie mitsenden können,
aber da fehlt mir dann noch das nötige Cockie.
Beim Zweitem weiß ich nichtmal wie man dort das Cockie überhaupt einbaut,
allerdings wäre es mir so dann schon lieber, da so keine Zusatzkomonenten nötig wären.
Delphi-Quellcode:
  Function TForm1.DownloadFile(Const URL: String): String;
    Begin
       IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.0.3705)';
       IdHTTP1.Request.CustomHeaders.Add('Cookie:' + Cookie);
       Result := IdHTTP1.Get(URL);
    End;


  Function TForm1.DownloadFile(Const URL: String): String;
    Const BufferSize = 2048;

    Var hSession, hURL: HInternet;
      Buffer: String;
      BufferLength: LongWord;

    begin
      Result := '';
      hSession := InternetOpen('User', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
      hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
      Repeat
        SetLength(Buffer, BufferSize);
        InternetReadFile(hURL, @Buffer[1], BufferSize, BufferLength);
        Result := Result + Copy(Buffer, 1, BufferLength);
      Until BufferLength = 0;
      InternetCloseHandle(hURL);
      InternetCloseHandle(hSession);
    End;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 18:18
MMh. Ich weiß nicht ob es klappt aber schau dir mal die Funktion InternetGetCookie() an. Zudem kann es sein, dass bei InternetOpenURL automatisch die IE Cookies mitgesendet werden, da diese Funktionen bestandteil des IE sind.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#9

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 18. Jul 2007, 18:24
mit InternetOpenURL funktionierte es nicht, weßhalb ich mal davon ausgeh, daß sie da nicht standardmäßig mitgeschickt werden.

InternetGetCookie schau ich mir aber mal an.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#10

Re: Datei runterladen und dabei IE-Cockies verwenden

  Alt 19. Jul 2007, 15:10
so, ich hatte nochmal alles durchprobiert.

TWebbrowser verwendet natürlich die IE-Cockies, aber mir ist aufgefallen, daß der bei HTML-Code die Tags verändert o.O
(vorallem Groß-/Kleinschreibung und ", sowie ' mal hinzugefügt, oder entfernt wird)

InternetOpenURL und Co. verwendet ebenfalls die Cockies,
keine Ahnung warum es bei den letzten Test dennoch nicht ging.

URLDownloadToFile: hab ich jetzt nicht nochmal getestet, da ich ja nicht erstr über 'ne Datei gehn wollte.

und die INDYs kann man mit den Cockies versehn, allerdings muß man da erstmal alle nötigen Cockies zur URL auslesen und per IdHTTP1.Request.CustomHeaders.Add an die Komponente übergeben, aber möglich ist es ^^


also Kurz und Knapp ... plötzlich geht es, auch wenn ich nicht weiß warum.
(hatte aber mal die IE-Caches geleert)
und ich verwende jetzt InternetOpenURL
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz