私はiOSアプリケーションからwebserviceを呼び出しています。これは返すまでに最大4分かかる場合があります。私はオブジェクトの呼び出しと読み込みにRestKitを使用しています。私が探しているのは、要求が長時間かかると、〜60秒後にタイムアウトエラーが発生するということです。 timeoutIntervalを不合理な量に設定しようとしましたが、〜60の後もタイムアウトします。ここでRestKitタイムアウトを無視する
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:HOSTNAME];
objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
objectManager.client.disableCertificateValidation = YES;
//timeout
objectManager.client.timeoutInterval = 1000;
は、サービスへの呼び出しされています。私は、バックグラウンドスレッドでWebサービスの呼び出しを
- (void)loadData
{
NSString *uid = [self retrieveFromUserDefaults:@"login_preference"];
NSString *pwd = [self retrieveFromUserDefaults:@"password_preference"];
if([uid isEqualToString:@""] || [pwd isEqualToString:@""]){
[self stopSpinner];
[self enableUserInterface:YES];
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Missing Settings"
message:@"Please enter your login information in the settings."
delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return;
}
RKObjectManager* objectManager = [RKObjectManager sharedManager];
NSDictionary *params = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:uid, pwd, nil]
forKeys:[NSArray arrayWithObjects:@"uid", @"pwd", nil]];
// Load the object model via RestKit
[objectManager loadObjectsAtResourcePath:[@"/synchData" appendQueryParams:params] delegate:self];
}
やっている - ことができることを設計の中で何かがあります問題を引き起こしている? iOSのようにバックグラウンドスレッドを60秒以上走らせないようなものは想像もできません。私はちょうど問題が何であるか把握することができません。
タイムアウトは、サーバーからの応答を取得するか、またはサーバーからの全応答を取得するのにかかる時間ですか?潜在的に非常に大きなjsonレスポンスを返しています - タイムアウト限度内ですべてを返す必要があるのですか、または制限内でサーバーからの応答を取得するだけですか?
ご要望の発送方法を教えてください。タイムアウトは、アプリケーションが応答を得るまでにアプリケーションが待機する時間です。この時間内にすべてを返す必要はありません。 – lawicko
ありがとうございます - 私は少し追加しました、それはあなたが意味するものですか?私は二重チェックし、私のタイムアウト間隔が何であっても、それは60秒後に死にそうです。 – Michaela
はい、これが私の意図です。私はあなたのコードに何か間違っているとは思わない、どのようにタイムアウトをキャッチしますか? RestKitのドキュメントでは、デフォルトのタイムアウトは120秒に設定されており、タイムアウト関数 'は とdidFailLoadWithError:によってRKRequestConnectionTimeoutErrorを返します。'それを 'requestDidTimeout:'で捕まえると他のメカニズムが呼び出す可能性があります。タイムアウトをキャッチしてコールスタックを調べて、タイムアウトの原因を正確に突き止めるメソッドにデバッガを置くと、おそらく60秒の値がどこから来るのかを特定するのに役立ちます。 – lawicko