假设我创建了一个HTTPWebRequest
,调用它GetResponse()
并开始从响应流中读取。如果在从流中读取时连接中断,我是否必须等待它超时,或者我可以立即知道出了什么问题?当我中断连接时不会抛出异常(例如,我将计算机与网络断开连接)。
问问题
2305 次
3 回答
1
这取决于实际情况。
一般来说,您需要为这两种情况(立即中断和后期中断)做好准备。例如,如果服务器断开您的连接,您会相对较快地知道。
有关可能发生的错误类型,请参见http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatusWebRequest
(类在错误时抛出WebException
s)
您有多种选择:
- 使用异步方法 (
BeginGet...
和EndGet...
) 并围绕此为您的应用程序建模。基本上,如果成功或错误,您将在“某个时候”收到通知。期间做点别的 - 如果您想要绝对控制,您可以
ReadTimeout
在获取的流上指定 a (参见其他答案的评论,也可以Timeout
在请求中设置)。重试什么的。 - 等一下
于 2012-05-21T20:35:54.280 回答
0
您不必担心请求是否被中断。
您可以按如下方式指定显式超时。如果它被打断,你会得到异常。
try
{
var request = HttpWebRequest.Create(url);
request.Timeout = 3000;
var response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode.Equals(HttpStatusCode.OK))
{
//do stuff
}
}
catch (Exception exception)
{
exception.ToLog();
}
于 2012-05-21T20:34:36.127 回答
-1
很可能您必须等待超时
于 2012-05-21T20:24:49.530 回答