Подтвердить что ты не робот

Клиент Delphi Seattle DataSnap - настройки прокси-сервера не работают

Я подключаюсь к серверу DataSnap с использованием сгенерированного класса прокси-сервера DS через TDSRESTConnection. Соединение работает нормально, и я могу вызвать методы сервера. Теперь я хочу подключиться через прокси-сервер, поэтому я устанавливаю свойства в объекте 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.

Может ли кто-нибудь пролить свет на это?

4b9b3361

Ответ 1

Проблема связана с ошибкой в ​​модуле Datasnap.DSHTTPClient.pas в процедуре TDSHTTP.PrepareRequest:

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;

В коде применяются только параметры прокси-сервера, если указано имя пользователя прокси, в то время как оно всегда должно применяться независимо.