Ein kleines Update zum Thema. Leider ist es noch nicht komplett gelöst, aber etwas weiter bin ich schon.
Mit dem Wechsel von 10.2.3 auf 10.3.1 wurden die
SOAP-Bibliotheken von Delphi im Hintergrund für die Übertragung von WinInet auf die WinHttp-
Api von Windows umgestellt. Dabei sind leider gleich mehrere Sachen kaputtgegangen, die aber immerhin zum Teil in 10.3.2 schon wieder repariert wurden.
Das erste: die Fehlermeldungen, die man bei Problemen mit
SOAP in 10.3.1 bekommen hat, waren selbst leider auch fehlerhaft. Es kam die besagte Fehlermeldung "Leeres Dokument", welche ja nicht wirklich weiterhilft. Nach einem Update auf 10.3.2 erhält man eine hilfreichere Fehlermeldung: 401 Unauthorized.
Das führt zum zweiten (eigentlichen) Problem: Wenn der Web Service in einem lokalen Netz auf einem Windows-Server läuft, dann war es bisher möglich, sich mit den aktuellen Windows Credentials anzumelden (NTLM) - man musste nicht seperat noch einmal Benutzername und Passwort speichern. Diese Funktion ist auf dem Weg von 10.2.3 nach 10.3.1 ebenfalls kaputtgegangen, offenbar aber durch ein Problem in der WinHttp-
Api, nicht in Delphi direkt (
hier beschreibt ein User das Problem und einen möglichen Workaround bei Stackoverflow). In Delphi 10.3.2 gibt es eine neue Propperty im HTTPWebNode vom HTTPRio, nämlich "UseDefaultCredentials", welche genau das macht, was der User auf Stackoverflow als Patch vorgeschlagen hat. Bei einem ersten kurzen Test beim Kunden hat es allerdings leider noch nicht geholfen - ich bekomme weiterhin einen 401.
Wenn ich Benutzername und Pssswort manuell in meinem Programm angebe und damit die HTTPWebNode-Eigennschaften Username und Password setze, dann funktioniert übrigens in allen Delphi-Versionen (10.2.3, 10.3.1, 10.3.2) alles problemlos. Aber alle Login-Daten, die ich nicht speichern muss, finde ich gut und würde daher eigentlich gerne weiter die Windows-Anmeldung benutzen, was zumindest ja auch in 10.3.2 auch wieder funktionieren müsste.
Wenn jemand dazu also noch etwas weiß, dann gerne immer her mit Tipps und Infos. Ansonsten schreibe ich hier irgendwann mal drunter, wenn ich eine endgültige Lösung gefunden haben sollte.