2013-12-25 3 views
4

Я пытаюсь загрузить изображение на сервер через многопрофильный запрос af 2.0, но кажется, что тело всегда равно нулю. Вот снимок из кода:AFnetworking multipart request body is nil

[self POST:path parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    [formData appendPartWithFormData:file name:@"file"]; 
} success:^(NSURLSessionDataTask *task, id responseObject) { 
andAPIResponseType:apiResponseType]; 
} failure:^(NSURLSessionDataTask *task, NSError *error) { 

}]; 

где файл фотографии, которые я взял из камеры устройства и сделал что-то вроде этого

NSData *file = UIImageJPEGRepresentation(avatar, 0.5) 

Однако, когда я вхожу, что я отправить через AF регистратору, я получаю что-то как это

103762376897069058/avatar?access_token=4f77072f0f7de259293f229c7a876130c79705d7': { 
"Accept-Language" = "en;q=1, fr;q=0.9, de;q=0.8, ja;q=0.7, nl;q=0.6, it;q=0.5"; 
"Content-Length" = 29120; 
"Content-Type" = "multipart/form-data; boundary=Boundary+0xAbCdEfGbOuNdArY"; 
"User-Agent" = "MixHR/0.0.1 (iPhone; iOS 7.0.4; Scale/2.00)"; 
} (null) 

Так почему же тело ноль? Я попробовал файл регистрации, он не пуст.

+0

Добавить эту строку в код * после * вы "' UIImageJPEGRepresentation'":' NSLog (@ "размер файла% л.д.", [длина данных]) ; '. Насколько велик объект данных? –

+0

Я предполагаю, что блок 'success' получает вызов? Вы посмотрели на объект task.response? Я вижу ответ с «statusCode» 406, когда я пытаюсь загрузить с помощью 'AFHTTPSessionManager', но если я это сделаю с помощью' AFHTTPRequestOperationManager' (точно такой же запрос и параметры), он отлично работает. – Rob

ответ

-1

Вы попробуйте этот код:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *strURL = @"http://YOUR_IP:YOUR_PORT/YOUR_PATH/.."; 

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

    AFJSONResponseSerializer *serializerResponse = [AFJSONResponseSerializer serializer]; 
    serializerResponse.readingOptions = NSJSONReadingAllowFragments; 
    serializerResponse.acceptableContentTypes = [NSSet setWithObject:@"application/json"]; 

    manager.requestSerializer = serializerRequest; 
    manager.responseSerializer = serializerResponse; 

    UIImage *image = [UIImage imageNamed:@"image.png"]; 
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)]; 

    NSDictionary *parameters = @{@"name":@"xxxx", 
           @"surname":@"xxxx", 
           }; 
    [manager POST:strURL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     [formData appendPartWithFormData:imageData name:@"photo"]; 
    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@""%@,operation.responseString); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@""%@,operation.responseString); 
    }]; 
} 
+0

это не работает. Я думаю, что есть некоторая странная ошибка с AFNetworking – ninjaneer