AFAIK не возможно (Delphi XE2).
Я использовал маленький брелок для доступа к необработанным заголовкам.
Тем не менее, это действительно грязно! Используйте на свой страх и риск!
Фактическим классом запроса класса является TIdHTTPAppRequest (ВНИМАНИЕ: может отличаться для разных типов приложений веб-брокера. Я не тестировал этот код с разными видами приложений для сбора данных).
Итак, хитрость:
Объявите вспомогательный класс, подобный следующему:
TIdHTTPAppRequestHelper = class helper for TIdHTTPAppRequest
public
function GetRequestInfo: TIdEntityHeaderInfo;
end;
implementation
function TIdHTTPAppRequestHelper.GetRequestInfo: TIdEntityHeaderInfo;
begin
Result := FRequestInfo;
end;
Таким образом, вы можете использовать этот помощник для доступа к защищенному полю FRequestInfo.
В обработчике событий 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 не позволяет читать необработанные заголовки. Это должно быть изменено!