假设我创建了一个HTTPWebRequest
,调用它的GetResponse()
并开始从响应流中读取。如果连接在从流中读取时被中断,我是否必须等待它超时,或者我是否可以立即知道出了什么问题?当我中断连接时没有异常(例如我将计算机与网络断开连接)。
答案 0 :(得分:1)
这取决于具体情况。
一般来说,您需要为两种情况做好准备(即时和晚期中断)。 例如,如果服务器断开连接,您就会相对快速地知道。
请参阅http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus了解可能发生的错误类型(WebRequest
类会因错误而抛出WebException
您有多种选择:
BeginGet...
和EndGet...
)并围绕此建模您的应用程序。基本上,如果成功或错误,您将“在某个时候”收到通知。在此期间做其他事情ReadTimeout
(请参阅对其他答案的评论,同时在请求上设置Timeout
)。重试或其他什么。答案 1 :(得分: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();
}
答案 2 :(得分:-1)
很可能你必须等待超时