delphi TWebBrowser.Navigate(URL、标志、目标框架名称、PostData、标头)在边缘浏览器中不可用

guz6ccqo  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(415)

正在从 Delphi XE8迁移到Delphi 11。
在 Delphi xe8中,我使用post方法使用了TWebBrowser.Navigate(URL,Flags,TargetFrameName,PostData,Headers)。
但是,在 Delphi 11中,我尝试通过edgebrowser(或TWebBrowser的边缘引擎)调用post方法,但发现这是不可能的。
函数TCustomEdgeBrowser.导航(常量AUri:string)=〉仅存在上述函数
我在寻找解决问题的答案。

s71maibg

s71maibg1#

为此,您需要一个支持ICoreWebView2_2和ICoreWebView2Environment2接口的组件,而TWebBrowser和TEdgeBrowser似乎不支持它们。
尝试使用WebView4Delphi并运行NavigateWithWebResourceRequestBrowser演示。
该演示演示了如何使用POST请求和TWVBrowserBase.NavigateWithWebResourceRequest调用进行导航。如下所示:

procedure TMainForm.GoBtnClick(Sender: TObject);
var
  TempRequest : ICoreWebView2WebResourceRequest;
  TempAdapter : IStream;
  TempParams, TempHeaders, TempMethod : string;
begin
  TempRequest := nil;
  TempAdapter := nil;

  try
    if assigned(FBody) then FreeAndNil(FBody);

    TempMethod  := 'POST';
    TempHeaders := 'Content-Type: application/x-www-form-urlencoded';
    TempParams  := PostParam1NameEdt.Text + '=' + PostParam1ValueEdt.Text + '&' + PostParam2NameEdt.Text + '=' + PostParam2ValueEdt.Text;
    FBody       := TStringStream.Create(TempParams);
    TempAdapter := TStreamAdapter.Create(FBody, soReference);

    if WVBrowser1.CoreWebView2Environment.CreateWebResourceRequest(AddressCb.Text, TempMethod, TempAdapter, TempHeaders, TempRequest) then
      WVBrowser1.NavigateWithWebResourceRequest(TempRequest);
  finally
    TempRequest := nil;
    TempAdapter := nil;
  end;
end;

相关问题