注册 登录
主题 : 请教AFN3.0上传图片的问题
级别: 新手上路
UID: 514481
精华: 0
发帖: 47
可可豆: 146 CB
威望: 146 点
在线时间: 774(时)
注册时间: 2015-10-16
最后登录: 2017-06-23
楼主 : 发表于: 2017-06-19 10:55    发自: Web Page
来源于 网络问题 分类

请教AFN3.0上传图片的问题   

贴上代码:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];//请求
    manager.requestSerializer.timeoutInterval = 8;
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json",@"text/javascript",@"text/plain",@"image/jpg", nil];
    
    [manager POST:urlStr parameters:newParams constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        //将图片以表单形式上传
        [formData appendPartWithFileData:image name:@"files" fileName:fileName mimeType:@"image/jpg"];
        
    }progress:^(NSProgress *uploadProgress){
        NSLog(@"progress:%@",uploadProgress);
        
    }success:^(NSURLSessionDataTask *task, id responseObject) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"dic:%@",dic);
        if (success) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        NSLog(@"%@",[error description]);
        NSLog(@"%@",error);
        if (failure) {
            failure(error);
        }
    }];


问题是请求的时候,程序就会崩溃,报错是:[AFHTTPSessionManager POST:parameters:constructingBodyWithBlock:progress:success:failure:]: unrecognized selector sent to instance 0x6000003c0780
打断点的话就崩在:[manager POST:urlStr parameters:newParams constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

感谢各位大神回答~
级别: 侠客
状态: 已签到 - [58天]
UID: 571332
精华: 0
发帖: 215
可可豆: 496 CB
威望: 393 点
在线时间: 240(时)
注册时间: 2016-07-02
最后登录: 2017-08-23
沙发 : 发表于: 2017-06-19 11:03    发自: Web Page

manager.requestSerializer = [AFJSONRequestSerializer serializer];//请求
注掉试试
级别: 新手上路
UID: 514481
精华: 0
发帖: 47
可可豆: 146 CB
威望: 146 点
在线时间: 774(时)
注册时间: 2015-10-16
最后登录: 2017-06-23
板凳 : 发表于: 2017-06-19 11:04    发自: Web Page
回 1楼(lichunhai) 的帖子
注释掉也不行~
级别: 侠客
UID: 570258
精华: 0
发帖: 97
可可豆: 232 CB
威望: 232 点
在线时间: 296(时)
注册时间: 2016-06-25
最后登录: 2017-08-11
3 楼:  发表于: 2017-06-19 11:07    发自: Web Page
你的image是NSData类型的吗
级别: 新手上路
UID: 514481
精华: 0
发帖: 47
可可豆: 146 CB
威望: 146 点
在线时间: 774(时)
注册时间: 2015-10-16
最后登录: 2017-06-23
4 楼:  发表于: 2017-06-19 11:08    发自: Web Page
回 3楼(云天涯丶) 的帖子
是NSData类型的
级别: 侠客
UID: 570258
精华: 0
发帖: 97
可可豆: 232 CB
威望: 232 点
在线时间: 296(时)
注册时间: 2016-06-25
最后登录: 2017-08-11
5 楼:  发表于: 2017-06-19 11:13    发自: Web Page
回 4楼(SHheJianJian) 的帖子
你把封装的上传图片的代码全贴出来(方法名也要),以及请求代码
级别: 侠客
状态: 已签到 - [58天]
UID: 571332
精华: 0
发帖: 215
可可豆: 496 CB
威望: 393 点
在线时间: 240(时)
注册时间: 2016-07-02
最后登录: 2017-08-23
6 楼:  发表于: 2017-06-19 11:14    发自: Web Page
把三个block里面的代码都注掉,看看崩不
级别: 新手上路
UID: 514481
精华: 0
发帖: 47
可可豆: 146 CB
威望: 146 点
在线时间: 774(时)
注册时间: 2015-10-16
最后登录: 2017-06-23
7 楼:  发表于: 2017-06-19 11:16    发自: Web Page
回 5楼(云天涯丶) 的帖子
NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"ajbs"] = self.ajbsStr;
    params[@"mlid"] = @"3";
    params[@"fydm"] = @"O10";
    NSString *ticket = @"ticket"
    [GYHttpTool uploadImage:wsla_savePhotoUrl andImageData:imageData ticket:ticket params:params success:^(id json) {
        NSLog(@"uploadSuccess:%@",json);
      
    } failure:^(NSError *error) {
        
    }];



+ (void)uploadImage:(NSString *)url andImageData:(NSData *)image ticket:(NSString *)ticket params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error)) failure{

    NSString *randCodeStr = [self get8bitString];//随机字符串
    NSString *timeStr = [self getTimeNow];
    NSString *thirdFlowStr = [self get32bitString];
    
    NSString *appid = @"90c170c1-7435-423f-b163-305051d3961c";
    NSString *uuid = @"f5734f66-25aa-493f-ac5f-8342aee53df4";
    NSString *md5key = @"86f9d5ac2a2280b3";
    NSString *version = @"1.0";
    NSString *pastMD5Str = [NSString stringWithFormat:@"%@%@%@%@%@%@",uuid,url,thirdFlowStr,appid,randCodeStr,md5key];
    NSString *newMD5Str = [self md5HexDigest:pastMD5Str];
    
    NSMutableDictionary *paramsDic = [NSMutableDictionary dictionary];
    paramsDic[@"thirdFlow"] = thirdFlowStr;
    paramsDic[@"busiCode"] = url;
    paramsDic[@"loginName"] = @"";
    paramsDic[@"appId"] = appid;
    paramsDic[@"secM"] = newMD5Str;
    paramsDic[@"randCode"] = randCodeStr;
    paramsDic[@"time"] = timeStr;
    paramsDic[@"seqM"] = @"";
    paramsDic[@"uuid"] = uuid;
    paramsDic[@"version"] = version;
    paramsDic[@"ticket"] = ticket;
    paramsDic[@"parameters"] = params;
    
    NSString *paramsDicStr = [self dictionaryToJson:paramsDic];
    NSDictionary *newParams = @{@"params":paramsDicStr};
    
    NSString *urlStr = [NSString stringWithFormat:@"%@",BaseUrl];
    
    NSString *fileName = [NSString stringWithFormat:@"%@.jpg",timeStr];
    
//    NSError *playerError = nil;
    NSLog(@"image--%@",image);
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//    manager.requestSerializer = [AFJSONRequestSerializer serializer];//请求
//    manager.requestSerializer.timeoutInterval = 8;
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpg", @"image/png", @"application/octet-stream", @"text/json", nil];
    
    [manager POST:urlStr parameters:newParams constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        //将图片以表单形式上传
        [formData appendPartWithFileData:image name:@"files" fileName:fileName mimeType:@"image/jpg"];
        
    }progress:^(NSProgress *uploadProgress){
        NSLog(@"progress:%@",uploadProgress);
        
    }success:^(NSURLSessionDataTask *task, id responseObject) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"dic:%@",dic);
        if (success) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        NSLog(@"%@",[error description]);
        NSLog(@"%@",error);
        if (failure) {
            failure(error);
        }
    }];
    
}




级别: 新手上路
UID: 514481
精华: 0
发帖: 47
可可豆: 146 CB
威望: 146 点
在线时间: 774(时)
注册时间: 2015-10-16
最后登录: 2017-06-23
8 楼:  发表于: 2017-06-19 11:19    发自: Web Page
回 5楼(云天涯丶) 的帖子
我之前是用2.0的方法写的,没问题,但审核说ipv6不行,所以我准备改成3.0再测试一下,但方法换掉了之后莫名其妙崩这种错误
级别: 新手上路
UID: 514481
精华: 0
发帖: 47
可可豆: 146 CB
威望: 146 点
在线时间: 774(时)
注册时间: 2015-10-16
最后登录: 2017-06-23
9 楼:  发表于: 2017-06-19 11:20    发自: Web Page
回 6楼(lichunhai) 的帖子
一样的额~~
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

验证问题:
苹果公司现任CEO是谁?2字 正确答案:库克

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部