Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WebDAV Login Beispiel (https://www.delphipraxis.net/182691-webdav-login-beispiel.html)

Ajintaro 11. Nov 2014 09:58

WebDAV Login Beispiel
 
Hallo DP,

Ich finde im Netz erstaunlich wenig Beispiele über Delphi und IdWebdav. Da Webdav von HTTP abgeleitet ist, habe ich einfach mal ein Selbstversuch gestartet und eine kleine Demo-Anwendung geschrieben. Diese soll sich auf einem Server einloggen um eine Datei herunterladen zu können:

Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var webdav: TIdWebDAV;
  Request: TStringList;
  Response: TMemoryStream;
  code:integer;
  s:string;
begin
 webdav  := TIdwebdav.Create;
 Response :=TMemoryStream.Create;
 Request := TStringList.Create;
  try
          webdav.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
          webdav.Request.BasicAuthentication:= true;
          webdav.Request.Username := 'yourname';
          webdav.Request.Username := 'Katzeklo';
          webdav.AllowCookies := True;
          webdav.HandleRedirects := True;
          webdav.Request.ContentType := 'application/x-www-form-urlencoded';

          webdav.post('https://www.meinzielserver.de/login', Request, Response);

          s := webdav.Get('https://www.meinzielserver.de/katzen/katzen.xml');
          showmessage(s);

        finally
          webdav.Free;
          Response.Free;
          Request.Free;
        end;

end;
Aber das Login wird nie ausgeführt, ich lande immer auf der Loginpage. Wie kann ich denn das Login erzwingen ?

mikhal 11. Nov 2014 12:16

AW: WebDAV Login Beispiel
 
Ist die Indy WebDAV-Komponente überhaupt in der Lage, das HTTPS-Protokoll zu verarbeiten? Ich habe mit den Standard-Komponenten, die mit Delphi mitgeliefert werden, bei meinen Versuchen nur mitgeteilt bekommen, dass dieses Protokoll nicht unterstützt wird.

Ich nutze deshalb für WebDAV die Lösung von Eldos.

Grüße
Mikhal

Ajintaro 11. Nov 2014 13:10

AW: WebDAV Login Beispiel
 
Hmm etwas teuer die Eldos Komponente...

mjustin 11. Nov 2014 13:11

AW: WebDAV Login Beispiel
 
Zitat:

Zitat von mikhal (Beitrag 1279363)
Ist die Indy WebDAV-Komponente überhaupt in der Lage, das HTTPS-Protokoll zu verarbeiten? Ich habe mit den Standard-Komponenten, die mit Delphi mitgeliefert werden, bei meinen Versuchen nur mitgeteilt bekommen, dass dieses Protokoll nicht unterstützt wird.

Indy unterstützt HTTPS über OpenSSL. Das Problem hier ist die richtige Anmeldung am Server, die schon vor dem Verwenden der WebDAV Protokollerweiterungen fehlschlägt. (Die Art der Anmeldung ist nicht WebDAV-spezifisch).

exilant 11. Nov 2014 13:27

AW: WebDAV Login Beispiel
 
Delphi-Quellcode:
          webdav.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
          webdav.Request.BasicAuthentication:= true;
          webdav.Request.Username := 'yourname';
          webdav.Request.Username := 'Katzeklo';
          webdav.AllowCookies := True;
Ich kenne die komponente nicht, aber du hast zweimal webdav.Username gesetzt. Ist das OK?

fkerber 11. Nov 2014 13:28

AW: WebDAV Login Beispiel
 
Hi,

kann es sein, dass es hier einen C&P-Fehler gibt:

Delphi-Quellcode:
          webdav.Request.Username := 'yourname';
          webdav.Request.Username := 'Katzeklo';
Viele Grüße,
Frederic

Ajintaro 11. Nov 2014 13:38

AW: WebDAV Login Beispiel
 
Huch! Ja das war ein klassischer copy/paste Fehler. Ich habe ihn behoben, das Ergebnis ist unverändert: es erfolgt kein Login. Im String "s" ist lediglich der HTML Output der Anmeldeseite.

wschrabi 15. Aug 2020 15:53

AW: WebDAV Login Beispiel
 
Webdav mit 10.4 sydney und mit dem GetIT Tools von /n Software IPWorks.


Hallo
ich habe mir in Delphi 10.4 die IPWorks 2020 GetiT Toolbox heruntergeladen. Auch ist da ein Webdav Beispiel drin.
Doch ich habe https und bekomme immer 151: 403 Forbitten.

Was kann ich da machen? MIt CarotDAV hab ich auf meinenm WEbDAV Server kein Problem.
Danke für jeden Rat.
mfg
ws

WiPhi 15. Aug 2020 21:16

AW: WebDAV Login Beispiel
 
Also ich habe WebDAV mit Indy ohne Probleme am laufen. WebDAV ist ja nur ein Aufsatz auf das Indy Http.

Bei mir klappts wie folgt:
Instanz erzeugen + SSL + Authentification + den Request konfigurieren:
Delphi-Quellcode:
  WebDAVClient := TIdWebDAV.Create;
  WebDAVClient.Intercept := LogEvent;
  WebDAVClient.IOHandler := OpenSSL;
  WebDAVClient.Request.BasicAuthentication := True;
  WebDAVClient.AllowCookies := True;
  WebDAVClient.HandleRedirects := True;
  WebDAVClient.Request.AcceptCharSet := 'utf-8';
  WebDAVClient.Request.CacheControl := 'no-cache';
  WebDAVClient.Request.Connection := 'Keep-Alive';
  WebDAVClient.Request.ContentEncoding := 'utf-8';
Anschließend ein Listing aus dem Root-Verzeichnis abfordern:
Delphi-Quellcode:
  Response := TMemoryStream.Create;
  try
    try
      WebDAVClient.DAVPropFind(URL, nil, Response, '1', 1, 1);
    except
      on E: EIdHTTPProtocolException do
        raise ELoginCredentialError.Create(E.Message);
    end;
    WebDAVXml.LoadFromStream(Response);
{$IFDEF DEBUG}
    WebDAVXml.SaveToFile('WebDAVResponse.xml');
{$ENDIF}
  finally
    Response.Free;
  end;
WebDAVXml ist ein TXmlDocument für die Serverantwort vom WebDAV. Wir verwenden das Apache WebDAV-Modul, aber das sollte keine Rolle spielen.

wschrabi 15. Aug 2020 23:33

AW: WebDAV Login Beispiel
 
Danke, doch wie ist das mit USERNAME und PAssword. Muss diese auch in die request eingebaut werden? wie?
Ich hab das so gemacht wie oben erwähnt, doch bekomme ich bei dem POST: 501 Not implemented yet.
Liegt das am SERVER?
Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.
Seite 1 von 3  1 23   

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