AFnetworking多部分请求正文为零 [英] AFnetworking multipart request body is nil

查看:94
本文介绍了AFnetworking多部分请求正文为零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过af 2.0多部分请求将图片上传到服务器,但似乎正文总是为空。以下是代码中的快照:

I am trying to upload picture to server, via af 2.0 multipart request, but it seems body is always null. Here is a snapshot from code:

[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) {

}];

其中file是我从设备相机拍摄的照片并做了类似的事情

where file is photo that i took from device camera and did something like this

 NSData *file = UIImageJPEGRepresentation(avatar, 0.5)

然而,当我记录通过AF记录器发送的内容时,我得到类似这样的内容

However when i log what i send via AF logger, i get something like this

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)

那为什么身体为零?我尝试记录文件,它不是空的。

So why is body nil? I tried logging file, it is not empty.

推荐答案

你试试这段代码:

- (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);
    }];
}

这篇关于AFnetworking多部分请求正文为零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆