2014-07-13 105 views
3

我需要從web瀏覽器加載頁面獲取HTTP狀態代碼,我結束了此解決方案:如何在WebBrowser控件中獲取當前狀態代碼?

我使用NavigateError事件從WebBrowserActiveXInstance實例。但它不能正常工作:如果頁面無法加載並且用戶wb.Refresh()它和加載沒問題,並且我只有一個錯誤(只有方法名稱纔會提示),我纔會得到一個狀態代碼保存舊的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); 
} 
+1

NavigateComplete2在沒有錯誤時觸發。所以用它來重置你的狀態碼。 –

+0

使用這個我可以假設沒有錯誤發生,但不能得到http狀態碼,因爲它的參數是'object pDisp,ref object url',其中'pDsip'是一個'WebBrowser'實例(我們無法獲得http狀態代碼沒有我的'axbrowser_navigatorError()')和'url'是我們正在處理的url,對吧? – Jack

+0

它看起來就像是WebBrowser的DocumentCompleted等價物...... – Jack

回答

1

WebBrowserRefreshNavigate/Navigate2完全不同。沒有NavigateComplete2爲Refresh刷新。我不認爲你可以得到Refresh的狀態代碼,除非你使用一些低級的APP handler鉤子。相關:Wpf WebBrowser Refresh

0

您可以獲取從NavigationEventArgs上LoadComplete(在WebResponse)刷新頁面時,這也應該引起。

+0

這是一個類的方法嗎?我無法在「WebBrowser」或「(SHDocVw.WebBrowser)webBrowser1.ActiveXInstance」中找到它。這是你說的那個msdn.microsoft.com/en-us/library/system.web.ui.page.loadcomplete(v=vs.110).aspx? – Jack

+0

您可以使用工具箱中的WebBrowser控件嗎?這個包裝ActiveX,但增加了更多的控制。 –

+0

這就是我正在使用的。注意'doSomething()'函數中的強制轉換。您只能使用WebBrowser獲取http狀態碼。 – Jack

相關問題