AFAIKこれは可能ではありません(Delphi XE2)。
生のヘッダーにアクセスするためにちょっとしたトリックを使用しました。 しかし、これは本当に汚いです!あなた自身のリスクで使用してください!
実際のクラスリクエストクラスは、TIdHTTPAppRequestです(警告:異なるタイプのウェブブラウザーアプリケーションで異なる可能性があります。このコードをさまざまな種類のdatasnapアプリでテストしていません)。
だから、トリックがある:あなたが保護されたFRequestInfoフィールドにacccessを持つように、このヘルパーを使用することができます。このように
TIdHTTPAppRequestHelper = class helper for TIdHTTPAppRequest
public
function GetRequestInfo: TIdEntityHeaderInfo;
end;
implementation
function TIdHTTPAppRequestHelper.GetRequestInfo: TIdEntityHeaderInfo;
begin
Result := FRequestInfo;
end;
:
は、次のようなクラスヘルパーを宣言します。次のコードを使用することができますOnActionイベントハンドラで
は、すべてのヘッダ名を持っている:
procedure Twm.wmWebActionItem1Action(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
var
HeadersCount: Integer;
I: Integer;
sw: TStreamWriter;
begin
Response.ContentType := 'text/plain';
Response.ContentStream := TMemoryStream.Create;
sw := TStreamWriter.Create(Response.ContentStream);
try
HeadersCount := TIdHTTPAppRequest(Request).GetRequestInfo.RawHeaders.Count;
for I := 0 to HeadersCount - 1 do
sw.WriteLine(TIdHTTPAppRequest(Request).GetRequestInfo.RawHeaders.Names[I]);
finally
sw.Free;
end;
Handled := True;
end;
しかし、TWebRequestは、生のヘッダを読み取ることができないことが悪いです。それは変更する必要があります!
それはトリックに感謝しました:) – MBulli