我想通过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);
}];
试试这个
答
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
感谢您的回复......但没有奏效。它遇到这个错误“2017-07-17 14:05:10.021实现[1172:74340]失败:请求失败:不可接受的内容类型:文本/纯”。我不需要添加像app_id,enctype等httpheaderfields – Jitendra
更改应用程序/ JSON文本/纯然,并尝试和你写你想发送app_id和app_key在标题这就是为什么我补充说,如果你的API是不需要那个头然后删除它 – vp2698
我也试过这一个,但它产生相同的错误。我做了一些修改也适合其要求,但同样的问题..邮递员的快照....它会帮助你了解更多链接1)https://drive.google.com/file/d/0BweySDAy0UNja1FscGJVVjIwSVE/view?usp=共享链接2)https://drive.google.com/file/d/0BweySDAy0UNjNWZ6bnc3d0Rtc3M/view?usp=sharing – Jitendra