Uri URL2 = new Uri(@"http://www......com");
HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(URL2);
request2.Timeout = 10000;
HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
我正在使用上面的代码进行webrequest。当我写一个像www.oiasjdilasod.com这样的愚蠢网址时,会抛出异常;但是,当现有页面几个小时不可用时,我无法获得此异常。它不会抛出任何异常并停止运行。 当这个页面不可用时我尝试在Internet Explorer上,它显示页面无法找到http 400错误请求。 您对如何捕获此异常有任何建议吗?
答案 0 :(得分:1)
您从服务器获得响应的事实意味着它可用,它只是无法正常工作 - 因此请求已经完成,并且没有超时,因为服务器已经响应。
只是不是您想要的回复。
相反,您应该检查StatusCode属性。
if(response2.StatusCode != HttpStatusCode.OK)
{
throw new Exception("Site is responding incorrectly!");
}
答案 1 :(得分:0)
你抛出什么例外?常规的Exception不会这样做,它必须是WebException。
...
catch(WebException e)
{
Console.WriteLine("Error: "+ e.Status);
}
编辑:
超时异常(与WebException一起)怎么样?
catch (TimeoutException e)
{
Console.WriteLine(e);
}
catch(WebException e)
{
Console.WriteLine("Error: "+ e.Status);
}
答案 2 :(得分:0)
之前我有同样的问题和
catch(WebException e)
{
Console.WriteLine(e.toString());
}
将解决它
答案 3 :(得分:0)
这段代码为我工作
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());
}