Я пользуюсь библиотекой ASIHTTPRequest, чтобы запросить некоторые данные с сервера в моем приложении для iPhone. Но я не могу выяснить, как создать тайм-аут так, чтобы, если сервер понижается или iPhone не имел интернет-соединения, которое не разрушает приложение.
Заранее спасибо
РЕДАКТИРОВАНИЕ>>>
tt. Kilew Ваш код не работает... Я отправил немного примера кода
NSURL *url = [NSURL URLWithString:@"A URL WITH A FORM"];
ASIFormDataRequest *requestPOST = [ASIFormDataRequest requestWithURL:url];
[requestPOST setPostValue:un forKey:@"username"];
[requestPOST setPostValue:pw forKey:@"password"];
[requestPOST setPostValue:@"Login" forKey:@"submit"];
[requestPOST start];
[requestPOST setTimeOutSeconds:10];
NSLog(@"Fail: %@", [requestPOST failWithError:ASIRequestTimedOutError]);
[request setTimeOutSeconds:10];
Обновление с дополнительным кодом:
NSURL *url = [NSURL URLWithString:@"A URL WITH A FORM"];
ASIFormDataRequest *requestPOST = [ASIFormDataRequest requestWithURL:url];
[requestPOST setPostValue:un forKey:@"username"];
[requestPOST setPostValue:pw forKey:@"password"];
[requestPOST setPostValue:@"Login" forKey:@"submit"];
[requestPOST setTimeOutSeconds:10];
[requestPOST setDelegate:self]
[requestPOST startAsynchronous];
Неудачный обработчик:
- (void)requestFailed:(ASIHTTPRequest *)request {
NSError *error = [request error];
if ([error isKindOfClass:[ASIRequestTimedOutError class]]) {
// Actions specific to timeout
}
}
Удачный обработчик:
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
// Use when fetching binary data
NSData *responseData = [request responseData];
// Do something with the response.
}
// Number of seconds to wait before timing out - default is 10
NSTimeInterval timeOutSeconds;
Если произойдет таймаут, вы получите
[self failWithError:ASIRequestTimedOutError];