我想通过AFNetworking

问题描述:

到多数据添加到服务器我必须添加一些数据,包括图像服务器以下细节:我想通过AFNetworking

方法:POST 服务器URL:http://dev.aaaa.com/register

页眉: 键值 的App_id XXXXX APP_KEY YYYYY ENCTYPE的multipart/form-data的

身体:

个键值 数据{“代码”:“21187”,其中“fname”:“和Manish”,“L-NAME”:“夏尔马”} 图像mypic.jpeg

的朋友请帮我形成的身体和头部的请求在AFNetworking下。

感谢大家在考虑这个问题,并协助我

UIImage *image = //Your Image. 

NSDictionary *params [email protected]{@"data": @{@"code" : @"21187", 
            @"fname" : @"Manish", 
            @"lname" : @"lname" 
            } 
         }; 


static AFHTTPRequestOperationManager *afPostManager = nil; 

afPostManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL: [NSURL URLWithString:@"http://dev.aaaa.com"]]; 
[afPostManager.responseSerializer setAcceptableContentTypes:[NSSet setWithObject:@"application/json"]]; 

[afPostManager.requestSerializer setValue:@"xxxx" forHTTPHeaderField:@"app-id"]; 
[afPostManager.requestSerializer setValue:@"xxxx" forHTTPHeaderField:@"app-key"]; 
[afPostManager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"enctype"]; 

afPostManager.responseSerializer = [AFJSONResponseSerializer 
            serializerWithReadingOptions:NSJSONReadingAllowFragments]; 


[afPostManager POST:@"register" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 

    NSData *imageData = UIImageJPEGRepresentation(image, 0.5); 

    [formData appendPartWithFileData:imageData name:title fileName:@"mypic.jpg" mimeType:@"image/jpeg"]; 

} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) { 
    NSLog(@"success : %@",responseObject); 

} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) { 
    NSLog(@"failed : %@",error.localizedDescription); 

}]; 

试试这个

+0

感谢您的回复......但没有奏效。它遇到这个错误“2017-07-17 14:05:10.021实现[1172:74340]失败:请求失败:不可接受的内容类型:文本/纯”。我不需要添加像app_id,enctype等httpheaderfields – Jitendra

+0

更改应用程序/ JSON文本/纯然,并尝试和你写你想发送app_id和app_key在标题这就是为什么我补充说,如果你的API是不需要那个头然后删除它 – vp2698

+0

我也试过这一个,但它产生相同的错误。我做了一些修改也适合其要求,但同样的问题..邮递员的快照....它会帮助你了解更多链接1)https://drive.google.com/file/d/0BweySDAy0UNja1FscGJVVjIwSVE/view?usp=共享链接2)https://drive.google.com/file/d/0BweySDAy0UNjNWZ6bnc3d0Rtc3M/view?usp=sharing – Jitendra

NSDictionary *dataDict = <data to send>; 
NSError *error = nil; 

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dataDict options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [NSString stringWithFormat:@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]]; 
NSLog(@“json = %@", jsonData); 

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
NSURL *baseURL = [NSURL URLWithString:@“http://dev.aaaa.com/”]; 
NSLog(@“base URL = %@", baseURL); 

AFHTTPSessionManager *sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL sessionConfiguration:config]; 
[sessionManager.requestSerializer setTimeoutInterval:500.0]; 
sessionManager.requestSerializer = [AFJSONRequestSerializer serializer]; 

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
sessionManager.responseSerializer = responseSerializer; 

sessionManager.responseSerializer.acceptableContentTypes = [sessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 

NSData *imageData = UIImageJPEGRepresentation(image, 0.5); 

[sessionManager POST:@“register” parameters:dataDict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

    //-------- here append images as form data ------------------------- 

    [formData appendPartWithFileData:imageData name:@“image” fileName:@“myimage.jpg" mimeType:@"image/jpeg"]; 

} progress:^(NSProgress * _Nonnull uploadProgress) { 

    progressBlock(uploadProgress); 

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 

    successBlock(task, responseObject); 

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 

    faliureBlock(task, error); 
}]; 

使用这可能会帮助你。

+0

嗨理查德....有没有这样的方法[sessionManager POST:@“register”parameters:dataDict constructBodyWithBlock:^(id for .........并且在快照中你可以看到我并不只是传递数据,而是一个图像旁边.... – Jitendra