![]() |
TRESTClient mit ProxyServer und UserName/Passwort
Moin,
ich stolpere gerade über ein Problem, welches sich so auch im REST Debugger zeigt und, soweit ich nun debuggt habe, ein Fehler in den Delphi REST und genutzten Klassen ist. Konfiguriere ich für den Zugriff einen ProxyServer (bspw. 192.168.168.55) nebst Port funktioniert alles soweit. Gebe ich nun jedoch zusätzlich einen ProxyUsernamen sowie ProxyPassword an, schlägt der Aufruf gleich fehl: "Invalid URL 192.168.168.55"). In meiner Verzweiflung bin ich nun schon bei unschönsten Versuchen der Form
Delphi-Quellcode:
Ist jemand auch schon über dieses Problem gestolpert und hat einen funktionierenden Hack/Würgaround gefunden?
// ugly hack test
LProxyParams := TCustomRESTClientAccess(Self).FHTTPClient.ProxyParams; TProxyParamsAccess(LProxyParams as TObject).FProxySettings.Scheme := 'https'; Ach so... Delphi REST Debugger Seattle und Berlin zeigen selbiges Verhalten. Danke und Grüße. |
AW: TRESTClient mit ProxyServer und UserName/Passwort
Zur Ergänzung, der Fehler passiert genau hier (unit System.Net.URLClient):
Delphi-Quellcode:
Als AURL wird der konfigurierte ProxyServer übergeben, hier also die oben genannte IP-Adresse. Debuggt man dann weiter landet man in procedure TURI.DecomposeURI(const AURIStr: string). Und die IP-Adresse ist nun einmal keine URI. Wie gesagt: ohne ProxyUserName und ProxyPassword geht es. Ich bin kurz vor der Verzweiflung, einen CodeHook für die DecomposeURI einzuführen um zu schauen, auf welchen Fehler ich dann stosse :lol:
function TCredentialsStorage.FindCredentials(AnAuthTargetType: TAuthTargetType;
const ARealm, AURL, AUser: string): TCredentialArray; [...] begin [...] if AURL = '' then LHost := '' else LHost := TURI.Create(AURL).Host; |
AW: TRESTClient mit ProxyServer und UserName/Passwort
Hallo,
Ich vermute, dass das ein Bug in der HTTP-Client-Library war. In Delphi Rio tritt das Problem nicht mehr auf. Es gibt folgende Workarounds, wenn man nicht gleich ein Delphi-Update machen will: 1. Das Property ProxyServer mit einem Schema versehen (also 'http://proxyserver-adresse' verwenden statt 'proxyserver-adresse'). Ob http oder https spielt keine Rolle. 2. Den Source-Code von System.Net.URLClient.pas patchen und in der Methode TURLClient.SetProxySettings nach Zeile 1814 Folgendes einfügen: if LURI.FScheme = '' then LURI.FScheme := TURI.SCHEME_HTTP; Das entspricht der Korrektur, die Embarcadero in Delphi Rio vorgenommen hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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