![]() |
Delphi 10.3 SOAP - Cookies werden nicht gespeichert
Hallo zusammen,
seit Delphi Rio funktionieren sämtliche Anwendungen nicht mehr, die einen SOAP-Service konsumieren und dabei eine Session benötigen, die in Form eines Cookies gespeichert werden. Die Aufforderungen in den jeweiligen HTTP-Responses, einen Cookie zu generieren (Set-Cookie), werden ignoriert und daher im INetCache ebenfalls nicht aufgeführt. Auch wenn der Cookie existiert (z.B. erzeugt von der alten kompilierten Software), wird er nicht verwendet. Weiß jemand, was dort in den Tiefen der SOAP-Bibliothek geändert wurde? Die Hierarchi bishin zum eigentlichen Client sieht folgendermaßen aus:
Code:
Dort ist die Eigenschaft "AllowCookies" standardmäßig auf true.
THTTPRIO -> THTTPReqResp -> THTTPClient
Vielen Dank für Eure Hilfe, Grüße Croco |
AW: Delphi 10.3 SOAP - Cookies werden nicht gespeichert
Die haben anscheinend komplett den HTTP-Client getauscht.
Früher wurde mittels WinInet kommuniziert und jetzt wird in der Klasse THTTPReqResp aus der Unit Soap.SOAPHTTPTrans eine Instanz von THTTPClient verwendet. Ich habe auch gerade das Problem, wenn man mit mehreren Soap-Services kommuniziert und die Authentifizierung mittels Cookie erfolgt ist. Da man für jeden Service eine eigenen HTTPRIO benötigt (war schon immer so) muss man das Cookie von einem RIO zum nächsten übermitteln. Das war früher anders!!! Mein Ansatz, den ich gerade versuche zu implementieren, ist, dass ich über den Event "HTTPRIOLoginHTTPWebNode1BeforePost" mir den CookieManager vom Service / HTTPRIO, der für das Login verantworlich ist, abgreife und das Cookie dem anderen RIO unterzuschieben. Falls ich es hinbekomme, packe ich Beispiel-Code dabei |
AW: Delphi 10.3 SOAP - Cookies werden nicht gespeichert
Delphi-Quellcode:
TForm1 = class(TForm)
HTTPRIOLogin: THTTPRIO; HTTPRIOPicture: THTTPRIO; procedure HTTPRIOLoginHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient); procedure HTTPRIOPictureHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient); procedure FormClose(Sender: TObject; var Action: TCloseAction); private FLogin: SoapLoginService; FPicture: SoapPictureService; FCookieManager: TCookieManager; // im Create oder Show auf nil setzen public { Public-Deklarationen } end; procedure TForm1.HTTPRIOLoginHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient); begin if FCookieManager = nil then FCookieManager := Client.CookieManager; end; procedure TForm1.HTTPRIOPictureHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient); var aCookie: TCookie; begin for aCookie in FCookieManager.Cookies do begin if aCookie.Name = 'JSESSIONID' then Client.CookieManager.AddServerCookie(aCookie, TUri.Create(HTTPRIOPicture.URL)); end; end; |
AW: Delphi 10.3 SOAP - Cookies werden nicht gespeichert
Gibt es hier Neuigkeiten, ob das Problem behoben wurde?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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-2025 by Thomas Breitkreuz