Jon*_*ham 12 delphi rest proxy datasnap
我正在使用生成的DS客户端代理类通过TDSRESTConnection连接到DataSnap服务器.连接工作正常,我可以调用服务器方法.我现在想要通过代理服务器进行连接,所以我在TDSRESTConnection对象上设置属性,但我可以看到没有任何内容通过代理服务器发送,就好像属性被忽略一样.我的代码如下:
var
myDS: TServerMethodsClient;
begin
DSRESTConnectionCfg.ProxyHost := 'localhost';
DSRESTConnectionCfg.ProxyPort := 8888;
myDS := TServerMethodsClient.Create(DSRESTConnectionCfg, False);
myDS.ServerMethodOne();
myDS.Free;
end;
Run Code Online (Sandbox Code Playgroud)
我也尝试过设置:
DSRESTConnectionCfg.HTTP.ProxyParams.ProxyServer := 'localhost';
DSRESTConnectionCfg.HTTP.ProxyParams.ProxyPort := 8888;
Run Code Online (Sandbox Code Playgroud)
两者都没有效果.但是我知道这个代码在我之前使用的Delphi版本中运行,它是XE6.问题似乎在转向XE10.
任何人都可以对此有所了解吗?
问题是由于 TDSHTTP.PrepareRequest 过程中的 Datasnap.DSHTTPClient.pas 单元中的错误所致:
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;
Run Code Online (Sandbox Code Playgroud)
如果指定了代理用户名,代码仅应用代理服务器设置,而无论如何它都应始终应用这些设置。