【问题标题】:Delphi Seattle DataSnap Client - Proxy server settings not workingDelphi Seattle DataSnap 客户端 - 代理服务器设置不起作用
【发布时间】:2018-01-12 13:50:00
【问题描述】:

我正在使用生成的 DS 客户端代理类通过 TDSRESTConnection 连接到 DataSnap 服务器。连接工作正常,我可以调用服务器方法。我现在想通过代理服务器进行连接,所以我在 TDSRESTConnection 对象上设置属性,但是我可以看到没有通过代理服务器发送任何内容,就好像这些属性被忽略了一样。我的代码如下:

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

我也试过设置:

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

两者都没有效果。但是我知道这段代码在我使用的以前版本的 Delphi 中工作,即 XE6。问题似乎在于转向 XE10。

有人能解释一下吗?

【问题讨论】:

  • XE6 版本是否真的可以与您在同一台机器上工作,您无法使用“XE10”版本?顺便说一句,没有 XE10,XE8 之后的版本是西雅图、柏林和东京——你使用的是哪些
  • 嗨,是的,它在同一台 PC 上的 XE6 中运行良好。抱歉,我使用的是 Delphi Seattle。
  • 更改属性后是否需要重置或重新打开连接?
  • 嗨,不,我也尝试在创建 TServerMethodsClient 后设置属性,但没有任何区别。
  • 对于通过 HTTP.ProxyParams 设置这些的方法,我发现了 ProxyServer specifies a fully qualified domain name or IP address for the proxy server. 的注释,你试过用它而不是 'localhost' 吗?

标签: rest delphi proxy datasnap


【解决方案1】:

问题是由于 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;

代码仅在指定代理用户名时应用代理服务器设置,而无论如何它都应始终应用设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多