AW: WebDAV Login Beispiel
Hallo,
welche TLS-Version will der Server denn? |
AW: WebDAV Login Beispiel
Zitat:
Delphi-Quellcode:
aufzurufen?
webdav.post('https://www.meinzielserver.de/login', Request, Response);
s := webdav.Get('https://www.meinzielserver.de/katzen/katzen.xml'); Das wäre falsch. Ich mach nochmal ein komplettes Codebeispiel:
Delphi-Quellcode:
Also du musst dich nicht explizit an einer Login-Adresse autehtifzieren, sondern jedes mal im Request deine Login-Daten mitgeben. Deswegen ist es bei WebDAV unbedingt zu empfehlen die Daten über eine TLS/SSL Verschlüsselung zu transportieren, sonst hast du em Ende ein FTP, wobei die Daten im Klartext übers Web geschoben werden :).
// WebDAV Komponente erzeugen
WebDAVClient := TIdWebDAV.Create; WebDAVClient.Intercept := LogEvent; // SSL handler zuweisen WebDAVClient.IOHandler := OpenSSL; WebDAVClient.Request.BasicAuthentication := True; WebDAVClient.AllowCookies := True; WebDAVClient.HandleRedirects := True; // Request konfigurieren WebDAVClient.Request.AcceptCharSet := 'utf-8'; WebDAVClient.Request.CacheControl := 'no-cache'; WebDAVClient.Request.Connection := 'Keep-Alive'; WebDAVClient.Request.ContentEncoding := 'utf-8'; // Login-Daten bei jedem Request mitgeben WebDAVClient.Request.Username := 'user'; WebDAVClient.Request.Password := 'SUPERGEHEIM'; // Nun mit dem Server kommunizieren, dabei die WebDAV-URI setzen // Diese muss immer aktuell zusammengesetzt werden, ich habe dafür ein Unterroutine, welche das in Abhängigkeit des aktuellen Verzeichnisses macht (BuildURI) - darin steckt Protokoll + Server + Resource // Download WebDAVClient.Get(BuildURL('katzen/katzen.xml'), Dest); // Protokoll + Server + Verzeichnis + Quelldatei, Dest ist ein Stream // Upload WebDAVClient.Put(BuildURL('katzen/katzen.xml'), Source); // Protokoll + Server + Verzeichnis + Zieldatei, Source ist ein Stream // Verzeichnis erstellen WebDAVClient.DAVMakeCollection(BuildURL('ein Verzeichnis')); Hoffe das hilft dir weiter :) |
AW: WebDAV Login Beispiel
Danke herzlichst für den Code. Habe es jetzt hinbekommen. Doch das Dir-Listing(aus dem Code oben) ist ein XML File, wie kann man das am Besten in eine ListView mit den Files in dem Dir anzeigen? Gibt`s da eine Parsing routine?
DANKE |
AW: WebDAV Login Beispiel
|
AW: WebDAV Login Beispiel
Das parsen musst du von Hand übernehmen, kannst dir aber den Xml Databinding-Assi zu Hilfe nehmen:
Du kannst das XML Schema von https://github.com/lookfirst/sardine...ter/webdav.xsd über den Databinding Assistenten von Delphi einbinden. Du liest die Response einfach ein und gehst die einzelnen Elemente durch. Grober Ablauf:
Delphi-Quellcode:
Hoffe das hilft dir weiter :)
var
Status: IXMLMultistatus; // generiert durch den Xml Databinding Assi in Delphi WebDAVXml: TXmlDocument; // Das Xml enthält die Serverantwort mit dem Listing im Rohformat Response: TMemoryStream; // Alles im Arbeitsspeicher abarbeiten begin // Per PropFind das aktuelle Listing abrufen und in einen Stream (hier Response) laden WebDAVClient.DAVPropFind(URL, nil, Response, '1', 1, 1); // Die '1' lädt das aktuelle Verzeichnis, die Tiefe kann hier bestimmt werden // Den Stream in ein TXmlDocument (hier WebDAVXml) laden WebDAVXml.LoadFromStream(Response); // Wenn du das Databinding nutzt kannst du dich mit Getmultistatus(...) durch die Liste arbeiten // .. anonsten jeden Tag per Hand auswerten... Status := Getmultistatus(WebDAVXml) // anschließend durch die Responses iterieren... for iResp := 0 to Status.Response.Count - 1 do begin ResponseItem := Status.Response[iResp]; // Listing aufbauen und weiterverarbeiten (z.B. eine StringList oder besser eine TList<> mit eigenem Typ mit mehreren Informationen (Dateigröße, Datum, usw.)) ... end; |
AW: WebDAV Login Beispiel
Zitat:
|
AW: WebDAV Login Beispiel
Zitat:
|
AW: WebDAV Login Beispiel
Noch eine Frage: Also ich kann mit dem Indy WebDav auch das XML Repsone bekommen wenn ich ein DirListing abrufe.
Doch ich habe es auch mit IPWorks WebDAV componente von /nsoftware probiert, doch bekomme ich da immer ein 403 ERROR wenn ich das Listing abrufen will. Upload und Download funktioniert mit beiden. Nach dem ich auch die Optionen in Apache2 unter Ubuntu 18.4 gesetzt habe, damit er Listings im Browser anzeigt, siehe https://stackoverflow.com/questions/...che-web-server bekomme ich aber weiterhin bei meinem IPW WebDAV Prg den Error 403 Forbidden bei meinem Ubunutu 18.4 WebDav Server (Port 4433 und gültiges Certificate) Wieso? Wer weiss Rat? DANKE |
AW: WebDAV Login Beispiel
Liebe Leute,
besten DANK für Eure Tips, konnt so mit Indy ein WEBDAV Client realisieren. Doch eine Frage. Beim Anlegen eines Verzeichnisses, das BLANK im Namen hat, wie geht man da vor. Er bekommt da einen Error. Soll man den Namen ummer Utf8encode-n? oder alle Blanks dir %20 ersezten? DANKE für Euren Rat. mfg ws |
AW: WebDAV Login Beispiel
Delphi-Quellcode:
bzw.
TURLEncoding.URLDecode(...)
Delphi-Quellcode:
aus
TURLEncoding.EncodePath(...)
Delphi-Quellcode:
ist dein Helfer ;)
uses
System.NetEncoding |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 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