如何在WebBrowser控件中获取当前状态代码?

本文关键字:状态 代码 获取 WebBrowser 控件 | 更新日期: 2023-09-27 18:12:47

我需要从WebBrowser中加载的页面获取http状态码,我最终采用了这个解决方案:

我使用来自WebBrowser ActiveXInstance实例的NavigateError事件。但它不能正常工作:如果页面无法加载,并且用户wb.Refresh()它和加载是OK的,我只得到一个状态代码,如果出现错误(明显的,像方法名称确实建议),我只有旧的http状态错误代码存储,因为成功加载不会改变我的http状态代码。怎么解呢?

public doSomething()
{
    SHDocVw.WebBrowser axBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
    axBrowser.NavigateError += new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(axbrowser_navigatorError);
}
public void axbrowser_navigatorError(object pDIsp, ref object URL, ref object frame, ref object statusCode, ref bool Cancel)
{
    statuscodeLabel.Text = statusCode.ToString();
    int.TryParse(statusCode.ToString(), out httpCode);
}

如何在WebBrowser控件中获取当前状态代码?

WebBrowserRefreshNavigate/Navigate2完全不同。没有为刷新触发NavigateComplete2。我不认为你能得到Refresh的状态码,除非你求助于一些底层的APP处理程序钩子。相关:Wpf浏览器刷新

你可以从LoadComplete()的NavigationEventArgs中获得WebResponse,这也应该在页面刷新时触发