HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 20000;
using (WebResponse response = request.GetResponse())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
// Do something with result
}
在上面的示例中,我定义了一个超时,如果碰巧超时,我怎么知道,结果是空的?
我是否收到任何响应类型?
如何确保我超时?
答案 0 :(得分:10)
GetResponse()
会抛出WebException
。测试完全会发生什么变得很简单 - 将超时设置为1ms并尝试点击需要一段时间才能返回的任何内容。
事实上,documentation明确说明了这一点:
如果超时期限在可以返回资源之前到期,则抛出WebException。
答案 1 :(得分:2)
您的HttpWebRequest.GetResponse来电将在{; 3}}时抛出;
Abort was previously called.
-or-
The time-out period for the request expired.
-or-
An error occurred while processing the request.
抓住这个例外。
我过去只是拉出我的网线来测试这种东西,虽然你可以更优雅并使用代理工具并阻止该特定请求。
答案 2 :(得分:0)
您应该使用HTTPWebResponse。它有一个状态代码,可以告诉您该信息等。 HTTPWebResponse是WebResponse的后代。