0

DataSnap HTTP を使用して REST サービスに接続する Delphi XE2 Win32 アプリがあります。HTTP 接続は、「Mozilla/3.0 (互換; Indy ライブラリ)」のデフォルトの「User-Agent」ヘッダーを使用します。これを自分のアプリに固有のものに変更して、サーバー上の接続をさまざまなアプリ エディションから監視できるようにしたいと考えています。接続を確立するために TDSRESTConnection を使用しています。'User-Agent' を設定するために使用する必要があるオブジェクト/プロパティを教えてもらえますか? 私は以下を使用してみました:

TDSRESTConnection.HTTP.Request.CustomHeaders.AddValue('User-Agent', 'MyText');

しかし、これは何の違いもありませんでした。

4

1 に答える 1

1

残念ながら、カスタム ヘッダーはクリアされて無視されますTDSRestRequest.GetHTTP(ユニットTDSRestRequestの実装では隠されますDatasnap.DSClientRest)。この回避策を試してください:

uses
  Datasnap.DSHTTP, IdHTTPHeaderInfo;

const
  SUserAgent = 'MyUserAgent';

type
  TDSHTTPEx = class(TDSHTTP)
    constructor Create(AOwner: TComponent; const AIPImplementationID: string); override;
  end;

  TDSHTTPSEx = class(TDSHTTPS)
    constructor Create(const AIPImplementationID: string); override;
  end;

{ TDSHTTPEx }

constructor TDSHTTPEx.Create(AOwner: TComponent; const AIPImplementationID: string);
begin
  inherited Create(AOwner, AIPImplementationID);
  with Request.GetObject as TIdRequestHeaderInfo do
    UserAgent := SUserAgent;
end;

{ TDSHTTPSEx }

constructor TDSHTTPSEx.Create(const AIPImplementationID: string);
begin
  inherited Create(AIPImplementationID);
  with Request.GetObject as TIdRequestHeaderInfo do
    UserAgent := SUserAgent;
end;

initialization
  TDSHTTP.UnregisterProtocol('http');
  TDSHTTP.RegisterProtocol('http', TDSHTTPEx);
  TDSHTTP.UnregisterProtocol('https');
  TDSHTTPS.RegisterProtocol('https', TDSHTTPSEx);

finalization
  TDSHTTP.UnregisterProtocol('http');
  TDSHTTP.UnregisterProtocol('https');

end.
于 2012-06-14T14:49:31.490 に答える