を作成しHTTPWebRequest
、それを呼び出してGetResponse()
、応答ストリームから読み取りを開始するとします。ストリームからの読み取り中に接続が中断された場合、タイムアウトになるまで待つ必要がありますか? それとも、何か問題が発生したことをすぐに知ることができますか? 接続を中断しても例外はスローされません (たとえば、コンピューターをネットワークから切断します)。
質問する
2305 次
3 に答える
1
状況によります。
一般に、両方の状況 (即時の中断と遅い中断) に備えておく必要があります。たとえば、サーバーが接続を切断した場合、比較的すぐにわかります。
発生する可能性のあるエラーの種類については、http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatusを参照してください (WebRequest
クラス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 に答える