1. ホーム
  2. ios

NSURLSessionです。URLリクエストのタイムアウト時間を増やすには?

2023-08-03 23:32:07

質問

iOS 7 の新しい NSURLSessionDataTask を使って、以下のようにデータを取得しています。

NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:
request completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
//
}];

エラーを回避するためにタイムアウトの値を増やすにはどうしたらよいでしょうか。 "The request timed out"NSURLErrorDomain コード= -1001 )?

のドキュメントを確認したところ NSURLSessionConfiguration のドキュメントを確認しましたが、タイムアウト値を設定する方法は見つかりませんでした。

ご協力ありがとうございました。

どのように解決するのですか?

ObjC

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.timeoutIntervalForRequest = 30.0;
sessionConfig.timeoutIntervalForResource = 60.0;

スウィフト

let sessionConfig = URLSessionConfiguration.default
sessionConfig.timeoutIntervalForRequest = 30.0
sessionConfig.timeoutIntervalForResource = 60.0
let session = URLSession(configuration: sessionConfig)

ドキュメントに書いてあること

timeoutIntervalForRequest そして timeoutIntervalForResource は、リソースだけでなくリクエストのタイムアウト間隔も指定します。

timeoutIntervalForRequest - 追加データの待ち時間に使用するタイムアウト間隔 を指定します。この値に関連付けられたタイマーは、新しいデータが到着するたびにリセットされます 新しいデータが到着するたびにリセットされます。新しいデータを受信せずにリクエストタイマーが 新しいデータを受信せずに指定された間隔に達すると、タイムアウトが発生します。 タイムアウトが発生します。

timeoutIntervalForResource - リソースのリクエストにかかる時間の最大値。 リソースリクエストにかかる時間の最大値。この値は この値は、あきらめる前にリソース全体が転送されるのをどれだけ待つかということを制御します。リソースタイマーは リソースタイマーは、要求が開始されたときに開始され、要求が完了するか、このタイムアウト間隔に達するまでカウントされます。 リクエストの完了またはこのタイムアウト間隔に達するまでカウントされます。 カウントされます。

に基づいて NSURLSessionConfiguration クラスリファレンス