Клиент 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.
Может ли кто-нибудь пролить свет на это?
Ответы
Ответ 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;
В коде применяются только параметры прокси-сервера, если указано имя пользователя прокси, в то время как оно всегда должно применяться независимо.