C# 如何在C中处理中断的HTTP连接#
假设我创建了一个C# 如何在C中处理中断的HTTP连接#,c#,httpwebrequest,connection,request,C#,Httpwebrequest,Connection,Request,假设我创建了一个HTTPWebRequest,调用它的GetResponse(),并开始从响应流中读取。如果在读取流时连接中断,我是否必须等待它超时,或者我是否可以立即知道出现了问题?当我中断连接(例如,我断开计算机与网络的连接)时,不会引发异常。最可能的情况是,您必须等待超时。最可能的情况是,您必须等待超时。您不必担心请求是否中断 您可以指定显式超时,如下所示。 如果它被中断,您将得到异常 try { var request = HttpWebRequest
HTTPWebRequest
,调用它的GetResponse()
,并开始从响应流中读取。如果在读取流时连接中断,我是否必须等待它超时,或者我是否可以立即知道出现了问题?当我中断连接(例如,我断开计算机与网络的连接)时,不会引发异常。最可能的情况是,您必须等待超时。最可能的情况是,您必须等待超时。您不必担心请求是否中断
您可以指定显式超时,如下所示。
如果它被中断,您将得到异常
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();
}
您不必担心请求是否被中断 您可以指定显式超时,如下所示。 如果它被中断,您将得到异常
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();
}
这要视情况而定 一般来说,您需要为这两种情况做好准备(立即中断和延迟中断)。 例如,如果服务器断开与您的连接,您将相对快速地知道 请参阅以了解可能发生的错误类型(错误时
WebRequest
classes抛出WebException
s)
您有多种选择:
- 使用异步方法(
和BeginGet…
)并围绕此为应用程序建模。基本上,如果出现成功或错误,您会在“某个时候”收到通知。同时做些别的事情EndGet…
- 如果您想要绝对控制,您可以在获取的流上指定
(请参阅另一个答案上的注释,也可以在请求上设置ReadTimeout
)。再试试吧Timeout
- 等等
WebRequest
classes抛出WebException
s)
您有多种选择:
- 使用异步方法(
和BeginGet…
)并围绕此为应用程序建模。基本上,如果出现成功或错误,您会在“某个时候”收到通知。同时做些别的事情EndGet…
- 如果您想要绝对控制,您可以在获取的流上指定
(请参阅另一个答案上的注释,也可以在请求上设置ReadTimeout
)。再试试吧Timeout
- 等等