AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TRESTClient mit ProxyServer und UserName/Passwort

TRESTClient mit ProxyServer und UserName/Passwort

Ein Thema von sahimba · begonnen am 11. Feb 2017 · letzter Beitrag vom 21. Okt 2019
Antwort Antwort
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
136 Beiträge
 
Delphi 10 Seattle Professional
 
#1

TRESTClient mit ProxyServer und UserName/Passwort

  Alt 11. Feb 2017, 18:55
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:
  // ugly hack test
  LProxyParams := TCustomRESTClientAccess(Self).FHTTPClient.ProxyParams;
  TProxyParamsAccess(LProxyParams as TObject).FProxySettings.Scheme := 'https';
Ist jemand auch schon über dieses Problem gestolpert und hat einen funktionierenden Hack/Würgaround gefunden?

Ach so... Delphi REST Debugger Seattle und Berlin zeigen selbiges Verhalten.

Danke und Grüße.

Geändert von sahimba (11. Feb 2017 um 18:57 Uhr) Grund: Tippselfehler
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
136 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: TRESTClient mit ProxyServer und UserName/Passwort

  Alt 11. Feb 2017, 19:17
Zur Ergänzung, der Fehler passiert genau hier (unit System.Net.URLClient):

Delphi-Quellcode:
function TCredentialsStorage.FindCredentials(AnAuthTargetType: TAuthTargetType;
  const ARealm, AURL, AUser: string): TCredentialArray;
[...]
begin
    [...]
    if AURL = 'then
      LHost := ''
    else
      LHost := TURI.Create(AURL).Host;
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
  Mit Zitat antworten Zitat
wra

Registriert seit: 21. Okt 2019
1 Beiträge
 
#3

AW: TRESTClient mit ProxyServer und UserName/Passwort

  Alt 21. Okt 2019, 22:28
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.
  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 +2. Es ist jetzt 20:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf