2015-12-04 2 views
1

Я знаю, что общие вопросы не разрешены на этом сайте - но у меня есть проблема, которая на самом деле не связана с моим кодом. Это одна из тех компьютерных проблем, когда мой код работал минуту, а не работал дальше - и я ничего не менял. Я собираюсь опубликовать то, что, по моему мнению, является соответствующим кодом, но я не получаю никаких сообщений об ошибках, либо в моей консоли отладки в XCode, либо на стороне сервера в журналах ошибок apache2.AFNetworking блок кода не выполняется

Возможно соответствующий код:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    UIImageWriteToSavedPhotosAlbum(info[UIImagePickerControllerOriginalImage], nil, nil, nil); 

    NSString * uploadURL = @"http://192.168.1.4/upload.php"; 
    NSLog(@"uploadImageURL: %@", uploadURL); 
    NSData *imageData = UIImageJPEGRepresentation(info[UIImagePickerControllerOriginalImage], 0.5); 

    NSString *queryStringss = [NSString stringWithFormat:@"%@",uploadURL]; 
    queryStringss = [queryStringss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    //manager.responseSerializer.acceptableContentTypes = nil; 
    manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 
    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/plain"]; 

    NSUserDefaults *userdefaults = [NSUserDefaults standardUserDefaults]; 

    NSString *usernameEncoded = [[userdefaults objectForKey:@"pfuser"]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSDictionary *params = @{@"username": usernameEncoded, @"count": [userdefaults valueForKey:@"count"]}; 

    [manager POST:queryStringss parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     [formData appendPartWithFileData:imageData name:@"file" fileName:@"file.jpeg" mimeType:@"image/jpeg"]; 
     } 
      success:^(AFHTTPRequestOperation *operation, id responseObject) { 
       NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 
       NSInteger count = [userdefaults integerForKey:@"count"]; 
       NSNumber *stored = [[NSNumber alloc] initWithInt:count]; 
       count++; 
       [userdefaults setInteger:count forKey:@"count"]; 


       GMSMarker *marker3 = [[GMSMarker alloc] init]; 
       marker3.position = mapView_.myLocation.coordinate; 
       marker3.title = [userdefaults objectForKey:@"pfuser"]; 
       marker3.map = mapView_; 

       PFGeoPoint *point = [PFGeoPoint geoPointWithLatitude:mapView_.myLocation.coordinate.latitude longitude:mapView_.myLocation.coordinate.longitude]; 

       PFObject *pointstore = [PFObject objectWithClassName:@"MapPoints"]; 
       pointstore[@"title"] = [userdefaults objectForKey:@"pfuser"]; 
       pointstore[@"location"] = point; 
       pointstore[@"count"] = stored; 

       [pointstore saveEventually:^(BOOL succeeded, NSError *error) { 

        if (error) { 
         NSLog(@"Error"); 
        } 
        else { 
         dispatch_async(dispatch_get_main_queue(), ^(void){ 
          mapView_.settings.myLocationButton = YES; 
         }); 
        } 
       }]; 
      } 
      failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
       NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
      }]; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 
} 

Выше код, который должен выполняться. Кажется, что все выполнено до [manager POST:queryStringss parameters:params...

Я не вижу сообщений об успешном завершении или сбоях NSLog, он просто выходит из строя ... приложение не разбивается, хотя ... приложение продолжает работать нормально.

Любая помощь была бы очень признательна сегодня утром (я бы хотел работать с ней с кем-то, кто знает, что они делают, в чате или что-то в этом роде). Заранее спасибо!

UPDATE

PHP код на стороне сервера:

<?php 

header("Content-Type: application/json"); 

$username = $_POST['username']; 
$count = $_POST['count']; 
$base64string = base64_encode(file_get_contents("images/".$username."/".$count."/".$username."file".$count.".jpeg")); 
echo json_encode(array("image" => $base64string)); 

?> 

UPDATE

Это где я сейчас объявляя manager:

#import "ViewController.h" 
#import "SignUpController.h" 
#import <Parse/Parse.h> 
#import "AFHTTPRequestOperation.h" 
#import "AFHTTPRequestOperationManager.h" 
@import GoogleMaps; 

typedef void (^CompletionHandlerType)(); 

@interface ViewController() 

@end 


@implementation ViewController { 
    GMSMapView *mapView_; 
    BOOL firstLocationUpdate_; 
    CLLocationManager *locationManager; 
    UIImageView *image; 
    UIButton *respondButton; 
    AFHTTPRequestOperationManager *manager; 
} 

... 

UPDATE

После некоторой замечательной помощи TheEye - мы выяснили, с почтальоном (расширение хром), что по какой-то причине приложение просто не находит страницу ... и я получаю ответ 404 (от почтальона). Я до сих пор не понял, почему это происходит, больше помощи будет очень благодарна ... но я не могу сразу ответить, поскольку я устал.

+1

Вы не можете пинговать людей, которые не ответили/не сделали комментарий к вашему вопросу. - И это, похоже, не очень-то связано с php? – Epodax

+0

Не могли бы вы попытаться написать ? [Сборщик увольненияПросмотрСообщения: ДА завершение: NULL]; сперва. –

+0

Менеджер должен быть выделен вне вашего метода делегата в качестве ivar (или, возможно, даже независимо как singleton). В вашем случае оно освобождается до того, как запрос будет полностью обработан. –

ответ

-1
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
[self dismissViewControllerAnimated:YES completion:nil]; 

UIImage *fetchedImage = (UIImage*) [info objectForKey:UIImagePickerControllerOriginalImage]; 

NSData *imageData = UIImageJPEGRepresentation(fetchedImage,0.0); 

[self SetUserProfilePhotoData:imageData]; 

} 


-(void)SetUserProfilePhotoData:(NSData*)imageData 
{ 
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.requestSerializer.timeoutInterval = 15000000000000; 
manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
// [serializer setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager.requestSerializer = serializer; 





NSUserDefaults *userdefaults = [NSUserDefaults standardUserDefaults]; 

NSString *usernameEncoded = [[userdefaults objectForKey:@"pfuser"]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSDictionary *params = @{@"username": usernameEncoded, @"count": [userdefaults valueForKey:@"count"]}; 

NSMutableURLRequest *request = 
[serializer multipartFormRequestWithMethod:@"POST" URLString:@“http://192.168.1.4/upload.php” parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    // [formData appendPartWithFormData:imageData name:@"image"]; 


    [formData appendPartWithFileData:imageData name:@"image" fileName:"file.jpeg" mimeType:@"application/octet-stream"]; 


} error:nil]; 


AFHTTPRequestOperation *operation = 
[manager HTTPRequestOperationWithRequest:request 
    success:^(AFHTTPRequestOperation *operation, id responseObject) { 

             dispatch_async(dispatch_get_main_queue(), ^{ 
            [SVProgressHUD showSuccessWithStatus:@"Uploaded!"]; 
             });          NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 
           NSLog(@"Success %@", string); 



            [[NSUserDefaults standardUserDefaults] setValue:@"" forKey:@"UserProfilePic"]; 

           } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
            [SVProgressHUD showErrorWithStatus:@"Error in uploading!"]; 
            NSLog(@"Failure %@", error.description); 
           }]; 

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


    // NSLog(@"Wrote %lld/%lld", totalBytesWritten, totalBytesExpectedToWrite); 

    float progress = (float)totalBytesWritten/(float)totalBytesExpectedToWrite; 
    [SVProgressHUD showProgress:progress status:[NSString stringWithFormat:@"Uploading %@%%",[NSString stringWithFormat:@"%.0f", progress*100]] maskType:SVProgressHUDMaskTypeClear]; 

}]; 

// 5. Begin! 
[operation start]; 


} 
+0

Я добавил ваши параметры и .php URL –

+0

кажется, что вы саркастичны с временным интервалом ... собираешься понизить это ... если у вас не будет объяснить временной интервал – ewizard

+0

i будет downvote и флаг, если вы не можете объяснить, что – ewizard

0

Глупый брандмауэр должен был начать случайное блокирование. Я отключил брандмауэр, и все снова заработало.

Смежные вопросы