salvadordf / WebView4Delphi

WebView4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC for Windows.
https://www.briskbard.com/forum/
MIT License
280 stars 56 forks source link

how to get ajax response content? #21

Closed fjfzeagle closed 2 years ago

fjfzeagle commented 2 years ago

procedure TMiniBrowserFrm.WVBrowser1AfterCreated(Sender: TObject); begin // We need to a filter to enable the TWVBrowser.OnWebResourceRequested event WVBrowser1.AddWebResourceRequestedFilter('*', COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);

end; procedure TMiniBrowserFrm.WVBrowser1WebResourceResponseReceived( Sender: TObject; const aWebView: ICoreWebView2; const aArgs: ICoreWebView2WebResourceResponseReceivedEventArgs); var TempArgs : TCoreWebView2WebResourceResponseReceivedEventArgs; TempResponse : TCoreWebView2WebResourceResponseView; uriP: PWideChar; uri: string; begin TempArgs := TCoreWebView2WebResourceResponseReceivedEventArgs.Create(aArgs); TempResponse := TCoreWebView2WebResourceResponseView.Create(TempArgs.Response); TempArgs.Request.Get_uri(uriP); uri := uriP; if not uri.Contains('getrealposlist') then Exit; Memo1.Lines.Add( DateTimeToStr(Now)+ ':' + uriP); //TempResponse.GetContent();

end;

WVBrowser1WebResourceResponseViewGetContentCompleted event not emited.

salvadordf commented 2 years ago

Hi,

It's necessary to create a TCoreWebView2WebResourceResponseViewGetContentCompletedHandler and use it as a parameter in TempResponse.GetContent(MyHandler);

I'll add an example to the MiniBrowser demo.

salvadordf commented 2 years ago

The latest version of demos\Delphi_VCL\MiniBrowser includes all the code to save the raw HTML content when you click the "Save resource as..." menu option.

It uses TCoreWebView2WebResourceResponseView.GetContent and the TWVBrowserBase.OnWebResourceResponseViewGetContentCompleted event to get the resource contents.

fjfzeagle commented 2 years ago

very thank you!!