CEFSharp - Post LifespanHandler.OnBeforePopup 中的数据
CEFSharp - Post Data in LifespanHandler.OnBeforePopup
版本:CefSharp.WPF来自 NuGet 的 63.0.3。
我有一个表格,post它是 _blank 的数据。
根据流程的结果,响应将是一个 PDF 文件或一个显示用户友好错误消息的 html 站点。
我可以下载 pdf 文件。
我也可以产生一个 post 请求导致错误消息。
使用 LifespanHandler 我可以拦截弹出窗口并创建自定义 window(使用 cefsharp.wpf.example)
但是自定义 window 执行获取请求(再次显示表单)而不是 post 请求(显示 pdf 文件或错误)
如何检测返回的是 pdf 还是消息?
找到适合我的解决方案。
提交表单时,我会将变量 (_popupincoming) 设置为 true。
在 IRequesthandler 的 OnResourceResponse 上,我做了这样的事情
public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
// Header will be set if there is a file for download
if (_popupincoming && response.ResponseHeaders.AllKeys.Contains("content-disposition") == false)
{
// Popup still opens but the result will also show in mainwindow
browserControl.GetMainFrame()?.LoadRequest(request);
_nofiledata = true;
// Close Popup
browser.CloseBrowser(true);
}
_popupincoming = false;
return false;
}
在我的主窗口的 FrameLoadEnd 事件中,我检查了 _nofiledata
if(_nofiledata)
{
FileLog.Error(getErrorMessage());
Browser.Back(); // Get Back to previous page
_nofiledata = false;
return;
}
这感觉有点不对,但让我从页面上获取错误信息。
以后reader请检查这个问题是否有合适的解决方案。
版本:CefSharp.WPF来自 NuGet 的 63.0.3。
我有一个表格,post它是 _blank 的数据。
根据流程的结果,响应将是一个 PDF 文件或一个显示用户友好错误消息的 html 站点。
我可以下载 pdf 文件。 我也可以产生一个 post 请求导致错误消息。
使用 LifespanHandler 我可以拦截弹出窗口并创建自定义 window(使用 cefsharp.wpf.example) 但是自定义 window 执行获取请求(再次显示表单)而不是 post 请求(显示 pdf 文件或错误)
如何检测返回的是 pdf 还是消息?
找到适合我的解决方案。
提交表单时,我会将变量 (_popupincoming) 设置为 true。 在 IRequesthandler 的 OnResourceResponse 上,我做了这样的事情
public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
// Header will be set if there is a file for download
if (_popupincoming && response.ResponseHeaders.AllKeys.Contains("content-disposition") == false)
{
// Popup still opens but the result will also show in mainwindow
browserControl.GetMainFrame()?.LoadRequest(request);
_nofiledata = true;
// Close Popup
browser.CloseBrowser(true);
}
_popupincoming = false;
return false;
}
在我的主窗口的 FrameLoadEnd 事件中,我检查了 _nofiledata
if(_nofiledata)
{
FileLog.Error(getErrorMessage());
Browser.Back(); // Get Back to previous page
_nofiledata = false;
return;
}
这感觉有点不对,但让我从页面上获取错误信息。
以后reader请检查这个问题是否有合适的解决方案。