Я вызываю веб-службу из своего приложения для iOS, и ответ может занять до четырех минут. Я использую RestKit для вызова и загрузки объектов. Что я обнаружил, так это то, что когда запросы занимают много времени, я получаю сообщение об ошибке Timeout через ~ 60 секунд. Я попытался установить timeoutInterval на абсурдные значения, но он все равно истекает после ~ 60.
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:HOSTNAME];
objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
objectManager.client.disableCertificateValidation = YES;
//timeout
objectManager.client.timeoutInterval = 1000;
Вот вызов службы:
- (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 - нужно ли мне вернуть все это в пределах тайм-аута или мне просто нужно получить какой-либо ответ от сервера в пределах лимита?