Ошибка AFHTTPRequestOperation

Я разрабатываю приложение, которое выполняет следующую задачу.

  1. Получение изображений из галереи и отображение в виде сетки.
  2. после выбора изображений они будут загружены на сервер

Я использую метод "POST" для загрузки. Он отлично работает в симуляторе iPhone. Но на устройстве iPhone 5 после некоторого прогресса загрузки будет создана следующая ошибка.

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x1f0ba650 {NSErrorFailingURLStringKey=http://192.168.1.25/webservices/uploadphoto.php/?user_id=22, NSErrorFailingURLKey=http://192.168.1.25/webservices/uploadphoto.php/?user_id=22, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x1f0a3b60 "The request timed out."}

Вот мой код для загрузки.

    -(void)uploadImageWithStatus:(NSData *)data filenumber:(NSInteger)filenumber{ NSUserDefaults *defaultUser = [NSUserDefaults standardUserDefaults];
        NSString *userId = [defaultUser stringForKey:@"UserId"];

        AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",UploadURL,userId]]];
        client.operationQueue.maxConcurrentOperationCount =1;

        //You can add POST parameteres here

        NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:nil];

        NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:nil parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {

            //This is the image
            [formData appendPartWithFileData: data name:@"f" fileName:[NSString stringWithFormat:@"%d_image.jpeg",rand()] mimeType:@"image/jpeg"];

        }];


       NSLog(@"Time out : %f",[request timeoutInterval]);
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {


            //        NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);

}];
        //Setup Completeion block to return successful or failure
        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSString *response = [operation responseString];
            NSLog(@"response: [%@]",response);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error: %@", [operation error]);
            if(error.code == -1001){
            UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Error!"
                                                              message:@"The request timed out." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [myAlert show];
            }
            //Code to Run if Failed

        }];

        [operation start];

Буду очень благодарен, если кто-нибудь сможет мне помочь. Заранее спасибо.


person Play cool    schedule 02.01.2013    source источник


Ответы (1)


Ошибка, которую вы получаете, является ошибкой тайм-аута: сервер, с которым вы пытаетесь связаться, не отвечает своевременно.

Я заметил, что вы пытаетесь подключиться к 192.168.1.25, локальному IP-адресу. Возможно ли, что вы запускаете сервер локально на своей машине разработки (чтобы симулятор iPhone работал нормально), но не можете получить к нему доступ на своем устройстве iPhone, поскольку он находится в другой сети?

Лучший способ проверить это - войти в Mobile Safari и загрузить 192.168.1.25. Если это не сработает, вы будете знать, что проблема не в вашем коде, а в том, как настроена ваша сеть.

person lxt    schedule 02.01.2013
comment
привет спасибо за ответ. Открываю 192.168.1.25 в мобильном сафари. Открылся без проблем. И, как я уже сказал в вопросе, некоторый прогресс достигнут, и после некоторого прогресса возникает ошибка. - person Play cool; 02.01.2013
comment
Тогда это звучит так, как будто ваша загрузка в какой-то момент прерывается. Вы можете не увидеть этого на симуляторе, так как он несколько быстрее, чем реальное устройство. Вы проверили конфигурацию PHP? См. Здесь: stackoverflow.com/ questions / 578190 / - person lxt; 02.01.2013
comment
Я разработчик iphone, я отправлю эту ссылку разработчику php. так что это займет некоторое время. - person Play cool; 02.01.2013
comment
мы установили следующие значения в php .....: ini_set ('upload_max_filesize', '10M'); ini_set ('post_max_size', '10M'); ini_set ('max_input_time', 300); ini_set ('max_execution_time', 300); - person Play cool; 02.01.2013
comment
И это все еще не работает? Я предлагаю попробовать проксировать ваше соединение с iPhone, чтобы вы могли видеть, что на самом деле происходит на сетевом уровне. - person lxt; 02.01.2013
comment
Извините, но я не знаю, как подключиться к iPhone через прокси. - person Play cool; 02.01.2013