NSURLErrorDomain code =-1001 время ожидания запроса истекло

#ios #objective-c #client-server

#iOS #objective-c #клиент-сервер

Вопрос:

Я разрабатываю приложение для iOS, которое должно отправлять данные, собранные датчиками, на сервер. Однако я могу отправлять данные только в течение 1 минуты, после чего я получаю следующую ошибку:

 submit error = Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x1469a9820 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=http://xyz/abc/, NSErrorFailingURLKey=http://xyz/abc/, _kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4, NSLocalizedDescription=The request timed out.}}, NSErrorFailingURLStringKey=http://xyz/abc/, NSErrorFailingURLKey=http://xyz/abc/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
  

Вот фрагмент кода, который пытается отправить данные:

 -(void)postData:(NSString*)postTo withParameters:(NSDictionary*)parameters withHeaders:(NSDictionary*)headers{
    [[UNIRest post:^(UNISimpleRequest *request) {
        [request setUrl:[NSString stringWithFormat:@"%@%@", BASE_URL, postTo]];
        [request setHeaders:headers];
        [request setParameters:parameters];
    }] asJsonAsync:^(UNIHTTPJsonResponse* response, NSError *error) {
        if (error) {
            NSLog(@"submit error = %@", error);
            return;
        }
        else
        {
            NSLog(@"submit to %@ success", [NSString stringWithFormat:@"%@%@/", BASE_URL, postTo]);
        }
    }];
}
NSDictionary* headers = @{@"accept": @"application/json"};
for (int i = 0; i < sensorDataLength; i  ) {
        SensorData *Obj = [SensorArray objectAtIndex:i];
        NSDictionary* parameters = @{@"x": [NSString stringWithFormat:@"%f", Obj.xAxis], @"y": [NSString stringWithFormat:@"%f", Obj.yAxis]};

        [self postData:@"abc/" withParameters:parameters withHeaders:headers];
    }
  

Как я могу увеличить интервал ожидания до 60 секунд?
Любая помощь была бы очень признательна.

Ответ №1:

Из документации:

Тайм-аут

Вы можете установить пользовательское значение тайм-аута (в секундах):

 [UNIRest timeout:2];
  

По умолчанию время ожидания равно 60.