我使用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 :(得分:4)
使用Watin自动化firefox而不是Process.Start。它是一个浏览器自动化框架,可以让您正确监控正在发生的事情。
编辑:另请参阅Google Webdriver http://google-opensource.blogspot.com/2009/05/introducing-webdriver.html
答案 1 :(得分:2)
如果你正在产生一个子进程,那就很难了,你可能需要使用每个浏览器的特定API(例如,FF和IE之间不一样)。
在许多情况下,exe检测到现有实例并在那里转发请求(因此您不能信任退出代码,因为甚至还没有在正确的exe中请求页面),这没有帮助。
就个人而言,我尽量避免为这种情况假设任何特定的浏览器;只需启动网址:
Process.Start("http://somesite.com");
这将使用用户的默认浏览器。你必须希望它出现 - 你不能(可靠而强有力地)在没有大量工作的情况下检查外部。
另一个选择是自己阅读数据(WebClient.Download*
) - 但这可能会遇到复杂的cookie,登录,用户代理意识等问题。
答案 2 :(得分:1)
使用HttpWebRequest类或WebClient类来检查这一点。如果URL不存在,我不认为Process.Start会返回一些内容。
答案 3 :(得分:0)
不要以此形式启动页面。而是创建一个加载http://localhost:<port>/wrapper.html
然后加载http://localhost/page.aspx
或http://localhost:<port>/pass.html
的本地http://localhost:<port>/fail.html
。 localhost:是一个由您的应用程序实现的简单HTTP服务器接口。
我们的想法是,Javascript在浏览器中提供了一个API ,这比浏览器外部上的API要标准得多。由于wrapper.html上的Javascript来自与后续资源相同的服务器甚至端口,因此它应满足当前浏览器中的同源策略。