我会尽量简单。当我的程序启动时,WebBrowser导航到URL。完成加载后,我使用事件webBrowser_DocumentCompleted
来测试if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
。如果为true,我使用stringHtml = webBrowser.DocumentText;
从WebBrowser中提取html,然后进行一些HTML解析以提取我需要的信息。 (基本上,我需要在该页面中检索一些日期/小时记录并显示它们)。但是当有人添加另一个日期/小时记录时,URL的HTML会发生变化。添加其他记录后,用户单击程序中的按钮,它将再次执行工作:导航到URL,提取HTML,解析并执行操作。
发生了什么:在我的计算机中它工作正常,但对于其他人来说刷新/导航再次没有捕获新记录。它带来了上次请求时的相同HTML。我认为WebBrowser有一些缓存系统。我已经尝试过了:
webBrowser.Refresh(WebBrowserRefreshOption.Completely)
之前执行DocumentText
; webBrowser.Document.OpenNew(true)
; Navigate("about:blank")
+ Document.Write(String.Empty)
然后导航(myURL)WebBrowser.Dispose()
然后创建一个新的,然后导航代码看起来像这样:
private void btnGetHTML_Click(object sender, EventArgs e)
{
webBrowser1.Document.OpenNew(true);
webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
webBrowser1.Navigate(MyURL); // because Refresh doesn't fire DocumentCompleted event
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
stringHtml = webBrowser1.DocumentText;
DoStuff();
}
}
private void DoStuff()
{
// For example, if I write stringHtml in a file just to check it, it will not be updated for some users
}
这些解决方案都不适用于其他解决方案,但它对我来说仍然有效。这是一个缓存问题吗?我该怎么做才能获得HTML的更新版本?