Page 1 of 1

How to list all request headers

Posted: Thu Oct 31, 2024 3:04 am
by alpires2000
Hi, How to list all request headers in WebResourceRequested?

I have this code:

Code: Select all

procedure Tfrm_web.WVBrowser1WebResourceRequested(Sender: TObject;
  const aWebView: ICoreWebView2;
  const aArgs: ICoreWebView2WebResourceRequestedEventArgs);
var
  Headers: ICoreWebView2HttpRequestHeaders;
  Request: ICoreWebView2WebResourceRequest;
  HeaderIterator: ICoreWebView2HttpHeadersCollectionIterator;
begin
  aArgs.get_Request(Request);
  Request.Get_Headers(Headers);
end;
How to list all headers contained in Headers in a memo?

Re: How to list all request headers

Posted: Thu Oct 31, 2024 10:09 am
by salvadordf
See the MiniBrowser demo :
https://github.com/salvadordf/WebView4Delphi/blob/b0cfcb2f551bb589e4ce6456b847d9e2aee2acc0/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.pas#L1008

Re: How to list all request headers

Posted: Thu Oct 31, 2024 11:28 am
by alpires2000
Hi Salvador, but in the minibrowser, there's only an example in the WebResourceResponseReceived event, I need to read the headers from the WebResourceRequested event.

Re: How to list all request headers

Posted: Fri Nov 01, 2024 9:43 am
by salvadordf
See the CustomSchemeBrowser demo too :
https://github.com/salvadordf/WebView4Delphi/blob/b0cfcb2f551bb589e4ce6456b847d9e2aee2acc0/demos/Delphi_VCL/CustomSchemeBrowser/uCustomSchemeBrowser.pas#L117

You only need to get the request from the "aArgs" argument :

Code: Select all

var
  TempArgs       : TCoreWebView2WebResourceRequestedEventArgs;
  TempRequest  : TCoreWebView2WebResourceRequestRef;
  TempHeaders  : TCoreWebView2HttpResponseHeaders;
  TempIterator  : TCoreWebView2HttpHeadersCollectionIterator;  
begin  
  TempArgs       := TCoreWebView2WebResourceRequestedEventArgs.Create(aArgs);
  TempRequest := TCoreWebView2WebResourceRequestRef.Create(TempArgs.Request);
  ...
end;  
Then get the headers from the request :

Code: Select all

  TempHeaders  := TCoreWebView2HttpResponseHeaders.Create(TempRequest.Headers);
And also the iterator from the headers :

Code: Select all

  TempIterator := TCoreWebView2HttpHeadersCollectionIterator.Create(TempHeaders.Iterator);
Finally read the headers :

Code: Select all

      while TempIterator.HasCurrentHeader do
        begin
          if TempIterator.GetCurrentHeader(TempName, TempValue) then
            begin
              // Handle the header information here with TempName and TempValue.
            end;

          TempIterator.MoveNext;
        end;