采用AFNetWorking 上传base64的图片到服务器,上传的图片解析不了。ASIHttpRequest

iOS 码拜 9年前 (2016-05-15) 1182次浏览
采用AFNetWorking 上传base64的图片到服务器,上传的图片解析不了。ASIHttpRequest上传是可以的,两种写法如下,请教,能给个思路吗?
IOS AFNetworking upload pictures to the server.The request is successful,But it can not parse base64 image.Then same request using ASIHTTPReuqest framework upload base64 images on the server side can parse is successful.Can you give a suggestion or idea?
AFNworking request Code:
UIImage *img = [avatar imageWithImageSimple:avatar scaledToSize:EZSIZE(320, 320)];
NSData* imageData = UIImageJPEGRepresentation(img, 0.5);
NSString *strBase64 = [imageData base64String];
NSDictionary * object = @{
@”firstname”  :@”nameTest”,
@”sex”        :@”male”,
@”user_id”    :@”1234556″,
@”avatar”     :strBase64,
@”phone”      :@”15899402939″
};
NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init];
[parameter setObject:@1 forKey:@”app”];
[parameter setObject:@”save_settings” forKey:@”m_action”];
[parameter setObject:[[object JSONRepresentation] forKey:@”m_param”]];

NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@”POST”
URLString:@”http://test…”
parameters:parameter
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
} error:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
ASIHttpRequest request code:
UIImage *img = [avatar imageWithImageSimple:avatar scaledToSize:EZSIZE(320, 320)];
NSData* imageData = UIImageJPEGRepresentation(img, 0.5);
NSString *strBase64 = [imageData base64String];

NSDictionary * object = @{
@”firstname”  :@”nameTest”,
@”sex”        :@”male”,
@”user_id”    :@”1234556″,
@”avatar”     :strBase64,
@”phone”      :@”15899402939″
};

NSString *parameter = @”app=1″;
parameter = [[parameter stringByAppendingString:@”&m_action=”] stringByAppendingString:@”save_settings”];
parameter = [[parameter stringByAppendingString:@”&m_param=”] stringByAppendingString:[object JSONRepresentation]];
NSData *data = [parameter dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

[request setDidFailSelector:@selector(handleRequestEventError:)];
[request setDidFinishSelector:@selector(parseAndSave:)];

[request addRequestHeader:@”Content-Length” value:[@([data length]) stringValue]];
[request setRequestMethod:@”POST”];
[request appendPostData:data];
[request addRequestHeader:@”Content-Type” value:@”application/x-www-form-urlencoded”];

[request setDelegate:self];

[_networkQueue addOperation:request];

解决方案

40

引用:

– (void)testDicty
{
NSDictionary *dic = @{@”name1″ :@”3432″,
@”name1″ :@”3432″,
@”name1″ :@”3432″
};
NSDictionary *dicy = @{@”name” :@”zhangsan”,
@”age”  :@”12″,
@”param” : [dic JSONRepresentation]
};
NSLog(@”dicy = %@”,dicy);
}
打印输出:
2015-03-19 10:39:51.265 SD4iPad[1926:54805] dicy = {
age = 12;
name = zhangsan;
param = “{“name1″:”3432″}”;
}
是不是原因是当一个字典里包含有一个[dic JSONRepresentation]对象,然后dic里的Json数据就会有转义字符? 是不是这个照成的?求指导。

这样有影响,假如json里套json的话,服务器拿到param后,实际上拿到的是一个字符串,需要再次把这个字符串解析为json


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明采用AFNetWorking 上传base64的图片到服务器,上传的图片解析不了。ASIHttpRequest
喜欢 (0)
[1034331897@qq.com]
分享 (0)