2009-12-14 35 views
1

我使用Process.Start("firefox.exe", "http://localhost/page.aspx"); 而我怎麼能知道頁面失敗或沒有? 或 如何通過HttpWebRequest知道HttpWebResponse頁面是否失敗?如何檢測新啓動的瀏覽器進程中的頁面加載是否失敗?

當我使用

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("somepage.aspx"); 
HttpWebResponse loWebResponse = (HttpWebResponse)myReq.GetResponse(); 
Console.Write("{0},{1}",loWebResponse.StatusCode, loWebResponse.StatusDescription); 

我怎麼能返回錯誤的詳細信息?

不需要額外的插件和框架。我想只有.NET

任何想法請

+0

你能給我們多一點信息嗎?例如,如果你用你正在使用的技術來標記你的問題,它會有很大的幫助。 – 2009-12-14 12:26:24

+0

@boris callend:我使用.net 3.5。我有服務類,打開一些頁面,並在這個頁面中有方法,在Page_load做一些事情。如果頁面失敗,我需要登錄。 – loviji 2009-12-14 12:34:59

回答

2

如果要生成一個子進程,這是很辛苦的,你可能會需要使用各個瀏覽器的特定的API(它不會例如,在FF和IE之間相同)。

在許多情況下,exe並不能幫助你檢測現有的實例並在那裏轉發請求(所以你不能相信退出代碼,因爲這個頁面還沒有被請求在正確的exe中)。

就我個人而言,我儘量避免假設這種情況下有任何特定的瀏覽器;只需啓動網址:

Process.Start("http://somesite.com"); 

這將使用用戶的默認瀏覽器。你必須希望它看起來雖然 - 你不能(可靠和強大)檢查外部沒有很多工作。其他

一種選擇是自己(WebClient.Download*)讀取數據 - 但這可能與複雜的問題,餅乾,登錄,用戶代理意識等方面

+0

謝謝,可能是另一種方式,我必須使用httpRequest。 – loviji 2009-12-14 12:37:13

1

使用HttpWebRequest類或WebClient類進行檢查。如果URL不存在,我認爲Process.Start不會返回任何內容。

+0

謝謝,我想是的,知道我在嘗試使用HttpWebRequest,HttpWebResponse。 – loviji 2009-12-14 13:03:03

0

請勿以此格式開始頁面。相反,請創建一個本地http://localhost:<port>/wrapper.html,它加載http://localhost/page.aspx,然後加載http://localhost:<port>/pass.htmlhttp://localhost:<port>/fail.html。 localhost:是一個由您的應用程序實現的簡單的HTTP服務器接口。

的想法是,使用Javascript給你一個API 瀏覽器,這是比外面的瀏覽器對API的更標準。由於wrapper.html上的Javascript來自與後續資源相同的服務器甚至端口,因此應該滿足當前瀏覽器中的同源策略。

相關問題