2017-08-04 2 views
12

Ich bin eine Verbindung zu einem DataSnap-Server mithilfe einer generierten DS-Client-Proxy-Klasse, über TDSRESTConnection. Die Verbindung funktioniert einwandfrei und ich kann die Servermethoden aufrufen. Ich möchte jetzt eine Verbindung über einen Proxy-Server herstellen, also setze ich die Eigenschaften für das TDSRESTConnection-Objekt, aber ich kann sehen, dass nichts über den Proxy-Server gesendet wird, als ob die Eigenschaften ignoriert werden. Mein Code ist wie folgt:Delphi Seattle DataSnap-Client - Proxy-Server-Einstellungen nicht funktioniert

var 
    myDS: TServerMethodsClient; 
begin 
    DSRESTConnectionCfg.ProxyHost := 'localhost'; 
    DSRESTConnectionCfg.ProxyPort := 8888; 
    myDS := TServerMethodsClient.Create(DSRESTConnectionCfg, False); 
    myDS.ServerMethodOne(); 
    myDS.Free; 
end; 

Ich habe auch versucht Einstellung:

DSRESTConnectionCfg.HTTP.ProxyParams.ProxyServer := 'localhost'; 
    DSRESTConnectionCfg.HTTP.ProxyParams.ProxyPort := 8888; 

Beide haben keine Wirkung. Ich weiß jedoch, dass dieser Code in der vorherigen Version von Delphi funktioniert, die ich verwendete, die XE6 ist. Problem scheint auf XE10 zu sein.

Kann jemand Licht darauf werfen?

+0

Funktioniert die XE6-Version tatsächlich auf der gleichen Maschine wie Sie, können Sie nicht mit der "XE10" -Version arbeiten? Übrigens, es gibt kein XE10, die Post-XE8-Versionen sind Seattle, Berlin und Tokio - welche von denen benutzt ihr? – MartynA

+0

Hallo, ja es funktioniert in XE6 auf dem gleichen PC. Entschuldigung, es ist Delphi Seattle, das ich benutze. –

+0

Müssen Sie die Verbindung zurücksetzen oder erneut öffnen, nachdem Sie ihre Eigenschaften geändert haben? – nil

Antwort

0

Problem ist nicht auf einen Fehler in der Datasnap.DSHTTPClient.pas Einheit im TDSHTTP.PrepareRequest Verfahren durch:

procedure TDSHTTP.PrepareRequest(const ARequest: IHTTPRequest); 
var 
    LIPRequest: TIPHTTPRequest; 
    I: Integer; 
    Lprox: TProxySettings; 
begin 
    if FProxyConnectionInfo <> nil then 
    begin 
    Lprox := TIPProxyConnectionInfo(FProxyConnectionInfo).FProxySettings; 
    //if Lprox.UserName <> emptystr then // <-- Comment this line out 
     FHTTPClient.ProxySettings := TProxySettings.Create(Lprox.Host, Lprox.Port, Lprox.UserName, Lprox.password, Lprox.Scheme); 
    end; 

Der Code wird nur die Proxyservereinstellungen der Anwendung, wenn ein Proxy-Benutzername spezifiziert ist, während es sollte die Einstellungen immer unabhängig anwenden.

Verwandte Themen