web-dev-qa-db-ja.com

NSURLConnectionタイムアウト?

このNSURLConnectionをデリゲートで使用しています。

nsconnection = [[NSURLConnection alloc] initWithRequest:request
    delegate:self startImmediately:YES];

問題は、Webサイトがまったく応答しないことです。何もありません。ブラウザで空白のページを回転させるだけで、失敗はありません。デリゲートでは、失敗を処理しますが、サイトが応答しない場合、デリゲートは呼び出されません。接続をタイムアウトする方法についてのアイデアはありますか?

62
Jordan

NSURLRequestオブジェクトでタイムアウトを指定できます。これを行う1つの方法は、 requestWithURL:cachePolicy:timeoutInterval: メソッドを介して構築することです。 (その部分を気にしたくない場合は、デフォルトのNSURLRequestUseProtocolCachePolicy cachePolicyパラメーターを渡すことができます。)タイムアウトは、基本的にiPhone SDKのすべての時間間隔と同様に、秒単位の浮動小数点値です。

また、NSURLConnectionのデリゲートが設定され、 connection:didFailWithError: メソッドに応答することを確認してください。接続は、接続の完了時に常にこのメソッドまたはconnectionDidFinishLoading:のいずれかを呼び出します。

129
Tyler

編集:この回答は廃止されましたが、回答日は正確でした。

私はこのスレッドが古いことを知っていますが、この問題にも出くわしました。これは、サービスが存在する内部ネットワークの外部でアプリをテストするときに発生しました。サービスは最終的にタイムアウトしますが、Appleはタイムアウトが発生する前に240秒(4分)の期間を義務付けています。問題の詳細については、このスレッドを参照してください。

NSMutableURLRequestがタイムアウト間隔に従っていない

24
ezekielDFM