Uri URL2 = new Uri(@"http://www......com");
HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(URL2);
request2.Timeout = 10000;
HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
我正在使用上面的代码进行WebRequest。当我写一个愚蠢的URL时,例如www.oiasjdilasod.com,它会引发异常。但是,如果几个小时内没有现有页面,我将无法获得此例外。它不会引发任何例外并停止运行。当我在Internet Explorer上尝试过此页面时,它显示页面找不到http 400不良请求。您是否有任何建议如何捕获此例外?
您正在从服务器中获得响应的事实意味着它可用,它只是无法正常工作 - 因此,请求已发出,并且由于服务器已响应而没有时间耗尽。
只是不是您想要的响应。
相反,您应该检查状态代码属性。
if(response2.StatusCode != HttpStatusCode.OK)
{
throw new Exception("Site is responding incorrectly!");
}
我以前有相同的问题,
catch(WebException e)
{
Console.WriteLine(e.toString());
}
将解决它
这个代码对我有用
try
{
Uri URL2 = new Uri(@"http://www.*****.com");
HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(URL2);
request2.Timeout = 100;
HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
}
catch (WebException e)
{
MessageBox.Show(e.Message.ToString());
}
您投掷什么例外?常规例外不会做,这必须是webException。
...
catch(WebException e)
{
Console.WriteLine("Error: "+ e.Status);
}
编辑:
超时例外(以及webException)怎么样?
catch (TimeoutException e)
{
Console.WriteLine(e);
}
catch(WebException e)
{
Console.WriteLine("Error: "+ e.Status);
}