如何在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
的Refresh
与Navigate
/Navigate2
完全不同。没有为刷新触发NavigateComplete2
。我不认为你能得到Refresh的状态码,除非你求助于一些底层的APP处理程序钩子。相关:Wpf浏览器刷新
你可以从LoadComplete()的NavigationEventArgs中获得WebResponse,这也应该在页面刷新时触发