从Delphi XE8到Delphi11的迁移正在进行中。
在Delphi xe8中,我使用了使用TWebBrowser.Navigate的post方法(URL、标志、TargetFrameName、PostData、Header)。
然而,在Delphi 11中,我试图通过edgebrowser (或TWebBrowser的边缘引擎)调用post方法,但发现这是不可能的。
函数TCustomEdgeBrowser.Navigate(const AUri: string) =>只存在上述函数
我在找如何解决这个问题的答案。
发布于 2022-07-05 07:13:05
为了做到这一点,您需要一个支持ICoreWebView2_2和ICoreWebView2Environment2接口的组件,而且TWebBrowser和TEdgeBrowser似乎不支持它们。
尝试使用WebView4Delphi并运行NavigateWithWebResourceRequestBrowser演示。
该演示展示了如何使用带有TWVBrowserBase.NavigateWithWebResourceRequest调用的POST请求导航。就像这样:
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;
https://stackoverflow.com/questions/72864306
复制相似问题