2009-09-15 13 views
62

私はこのNSURLConnectionを代理人と共に使用しています。NSURLConnectionタイムアウト?

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

ウェブサイトがまったく応答しないという問題があります。何もない、空白のページをブラウザに表示し、失敗しません。私の代理人では、私は失敗を処理しますが、サイトが応答しない場合、代理人は呼び出されません。どのように接続をタイムアウトするためのアイデア?

答えて

127

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

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

+0

デリゲートは、作業を行い、エラーがWebサーバーによって送信されたときに応答します。この場合、Webサーバーは何も送信しません。ちょうど回る。私はタイムアウトを追加するリクエストメソッドを設定します。おかげで – Jordan

+0

ちょうどチェックしました。すでにタイムアウトに設定されています。 – Jordan

+0

NSURLStuffに代わるものを試したいのであれば、私の友人がASIHTTPRequest(google it)を無料で使用することをお勧めしました。 – Tyler

24

編集:この回答は現在廃止されていますが、回答日は正確です。

このスレッドは古いと知っていますが、私もこの問題に遭遇しました。これは、サービスが存在する内部ネットワークの外部でアプリをテストするときに発生しました。サービスは最終的にタイムアウトになりますが、アップルはタイムアウトが発生するまでに240秒(4分)を要求します。問題の詳細については、このスレッドをチェックしてください。

NSMutableURLRequest not obeying my timeoutInterval

+0

私はアプリケーションにNSCredentialsを追加してこれを修正したと思います。非応答性は、私が提供していなかったサーバーが認証を要求しているためでした。 – Jordan

+3

これは間違った情報です! http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html%23//apple_ref/occ/cl/NSURLRequestによると、デフォルトのタイムアウト間隔は60秒。 – stigi

+4

@stigi ezekielDFMがiOSについて話しているのとは対照的に、あなたはMac OS用の資料を参照しているようです。 – leukosaima