I am trying to get all the raw request headers from Asynchronous Pluggable Protocol I've implemented. But I can only get a few basic headers using IHttpNegotiate
. Such as Accept-Language
, Referer
. With a tool called HTTP Analyzer
these things can be viewed in more detail.
function RetrieveRequestHeaders(const szUrl: PWideChar; const OIProtSink: IInternetProtocolSink): String;
var
pHttpNeg: IHttpNegotiate;
Headers: PWideChar;
HR: HResult;
begin
Result := '';
HR := IUnknown_QueryService(OIProtSink, IID_IHttpNegotiate, IID_IHttpNegotiate, pHttpNeg);
if Succeeded(HR) then
begin
Headers := nil;
HR := pHttpNeg.BeginningTransaction(szUrl, nil, 0, Headers);
if Succeeded(HR) then
begin
Result := Headers;
CoTaskMemFree(Headers);
end;
end;
end;