![]() |
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:
Aber das Login wird nie ausgeführt, ich lande immer auf der Loginpage. Wie kann ich denn das Login erzwingen ?
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; |
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 ![]() Grüße Mikhal |
AW: WebDAV Login Beispiel
Hmm etwas teuer die Eldos Komponente...
|
AW: WebDAV Login Beispiel
Zitat:
|
AW: WebDAV Login Beispiel
Delphi-Quellcode:
Ich kenne die komponente nicht, aber du hast zweimal webdav.Username gesetzt. Ist das OK?
webdav.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
webdav.Request.BasicAuthentication:= true; webdav.Request.Username := 'yourname'; webdav.Request.Username := 'Katzeklo'; webdav.AllowCookies := True; |
AW: WebDAV Login Beispiel
Hi,
kann es sein, dass es hier einen C&P-Fehler gibt:
Delphi-Quellcode:
Viele Grüße,
webdav.Request.Username := 'yourname';
webdav.Request.Username := 'Katzeklo'; Frederic |
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.
|
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 |
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:
Anschließend ein Listing aus dem Root-Verzeichnis abfordern:
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';
Delphi-Quellcode:
WebDAVXml ist ein TXmlDocument für die Serverantwort vom WebDAV. Wir verwenden das Apache WebDAV-Modul, aber das sollte keine Rolle spielen.
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; |
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 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz