31

小さな画像を投稿しているので、タイムアウト間隔を短くしたいです。画像が数秒以内に送信されない場合は、おそらく送信されません。なんらかの理由で、NSURLConnectionをどれだけ短く設定しても、失敗することはありませんtimeoutInterval

// Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
                                 initWithURL:[NSURL URLWithString:@"http://www.tumblr.com/api/write"]
                                 cachePolicy:NSURLRequestUseProtocolCachePolicy
                                 timeoutInterval:0.00000001];

/* Populate the request, this part works fine */

[NSURLConnection connectionWithRequest:request delegate:self];

ブレークポイントを設定して- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)errorいますが、トリガーされません。私の画像は問題なく投稿され続けており、小さいにもかかわらず Tumblr に表示されていますtimeoutInterval

4

3 に答える 3

49

この問題について議論しているApple開発フォーラムのスレッドがあります。どうやらiPhoneOSでは、セッターはtimeoutIntervalに最低240秒(4分)を義務付けています。これは、postBodyが空でない場合にのみ発生します(通常、POSTリクエストを使用する場合)。これはおかしなことに思えますが、WWAN(3G)インターフェイスがウェイクアップするのに何秒もかかる場合でも、リクエストがシステムを離れることを確認するためにあるようです。240秒はかなり急なように見えるので、タイマーを設定し、タイマーが起動したときに非同期接続をキャンセルすることをお勧めします。これはばかげているように思えますが、POSTリクエストのタイムアウトを取得できたのはそれだけです... :-(

于 2010-05-05T20:59:13.637 に答える
5

François が上で述べたように、iOS 6 (5.1 を含む) までは、彼が説明したように 240 秒が機能しているように見えました。現在、このタイムアウトは期待どおりにデフォルト値の 60 秒になっているように見えるため (自分で明示的に設定していない場合)、誤ってより長い時間に依存している可能性のある POST 要求がある場合は、変更する必要があるかもしれません。より高い値を使用するには、timeoutInterval を手動で設定します。POST のタイムアウトを 60 秒未満と 60 秒超の両方に設定できたので、60 秒のマークがこのタイプのリクエストのタイムアウトに対する最小制限を表しているようには見えません。

于 2012-09-21T17:13:49.577 に答える
-2

この問題はiOS5で修正されているため、この問題に直面することはありません。そして、あなたのコードは完璧に機能します

于 2012-05-15T02:31:39.523 に答える