AFAIK to nie jest możliwe (Delphi XE2).
Użyłem małego trink, aby uzyskać dostęp do surowych nagłówków. To jest naprawdę brudne! Używaj na własne ryzyko!
Właściwą klasą klas jest TIdHTTPAppRequest (OSTRZEŻENIE: Może być różny dla różnych typów aplikacji webbrokera .Nie przetestowałem tego kodu z różnymi rodzajami aplikacji datasnap).
Dlatego sztuką jest:
Zadeklaruj klasy pomocnika podobny do następującego:
TIdHTTPAppRequestHelper = class helper for TIdHTTPAppRequest
public
function GetRequestInfo: TIdEntityHeaderInfo;
end;
implementation
function TIdHTTPAppRequestHelper.GetRequestInfo: TIdEntityHeaderInfo;
begin
Result := FRequestInfo;
end;
W ten sposób można korzystać z tej pomocnika mieć acccess do pola FRequestInfo chronionej.
W obsługi zdarzeń OnAction można wykorzystać poniższy kod, żeby mieć wszystkie nazwy nagłówków:
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;
Jednak jest to złe, że TWebRequest nie pozwala odczytać surowych nagłówków. To powinno zostać zmienione!
To mi się udało: dziękuję :) – MBulli