AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi WebDAV Login Beispiel

WebDAV Login Beispiel

Ein Thema von Ajintaro · begonnen am 11. Nov 2014 · letzter Beitrag vom 29. Mär 2021
Antwort Antwort
Seite 2 von 3     12 3   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: WebDAV Login Beispiel

  Alt 16. Aug 2020, 05:36
Hallo,
welche TLS-Version will der Server denn?
Heiko
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: WebDAV Login Beispiel

  Alt 16. Aug 2020, 16:24
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.
Versuchst du dir URI "login"

Delphi-Quellcode:
webdav.post('https://www.meinzielserver.de/login', Request, Response);
s := webdav.Get('https://www.meinzielserver.de/katzen/katzen.xml');
aufzurufen?

Das wäre falsch.

Ich mach nochmal ein komplettes Codebeispiel:
Delphi-Quellcode:
  // 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'));
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 .
Hoffe das hilft dir weiter
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#13

AW: WebDAV Login Beispiel

  Alt 16. Aug 2020, 17:23
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

Geändert von wschrabi (16. Aug 2020 um 17:26 Uhr)
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
322 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: WebDAV Login Beispiel

  Alt 16. Aug 2020, 18:45
hallo,

eventuell hilft das

http://www.destructor.de/xmlparser/index.htm

Gruß
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: WebDAV Login Beispiel

  Alt 16. Aug 2020, 19:12
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:
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;
Hoffe das hilft dir weiter
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#16

AW: WebDAV Login Beispiel

  Alt 17. Aug 2020, 06:21
Danke SUPER!
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#17

AW: WebDAV Login Beispiel

  Alt 17. Aug 2020, 06:22
Das parsen musst du von Hand übernehmen, kannst dir aber den Xml Databinding-Assi zu Hilfe nehmen:

Hoffe das hilft dir weiter
Super, besten Dank, wieder viel gelernt.
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#18

AW: WebDAV Login Beispiel

  Alt 17. Aug 2020, 14:02
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
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#19

AW: WebDAV Login Beispiel

  Alt 18. Aug 2020, 14:27
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
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: WebDAV Login Beispiel

  Alt 18. Aug 2020, 17:33
TURLEncoding.URLDecode(...) bzw.

TURLEncoding.EncodePath(...) aus

Delphi-Quellcode:
uses
  System.NetEncoding
ist dein Helfer
Wer sucht, der findet. Wer länger sucht, findet mehr.

Geändert von WiPhi (18. Aug 2020 um 17:35 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:38 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