2009-12-14 55 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来自与后续资源相同的服务器甚至端口,因此应该满足当前浏览器中的同源策略。

相关问题