AFN的进一步封装

1.首先建个NSobeject类

一:.h文件方法
/** post请求 */

  • (void)post:(NSString *_Nullable)url params:(NSMutableDictionary _Nullable)params controller:(UIViewController_Nullable)VC success:(void (^_Nullable)(id _Nullable json))success failure:(void (^_Nullable)(NSError * _Nullable error))failure;

.m文件的方法实现

  • (void)post:(NSString *_Nullable)url
    params:(NSMutableDictionary _Nullable)params
    controller:(UIViewController
    _Nullable)VC
    success:(void (^_Nullable)(id _Nullable json))success
    failure:(void (^_Nullable)(NSError * _Nullable error))failure {
// 1.创建请求管理者
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];//请求数据格式为json
manager.responseSerializer = [AFJSONResponseSerializer serializer];//响应数据格式
manager.requestSerializer.timeoutInterval = 10.0;
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromSet:[NSSet setWithObjects:@"application/json", @"text/json" , @"text/html", @"text/plain", @"text/javascript", nil]];

[manager POST:url parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {        
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    if (success) {
        success(responseObject);
    }
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    if (failure) {
        failure(error);
    }        
}];

}
二,
/** get请求 */
.h文件方法

  • (void)get:(NSString *_Nullable)url params:(NSMutableDictionary _Nullable)params controller:(UIViewController_Nullable)VC success:(void (^_Nullable)(id _Nullable json))success failure:(void (^_Nullable)(NSError * _Nullable error))failure;
    .m文件方法
  • (void)get:(NSString *_Nullable)url
    params:(NSMutableDictionary _Nullable)params
    controller:(UIViewController
    _Nullable)VC
    success:(void (^_Nullable)(id _Nullable json))success
    failure:(void (^_Nullable)(NSError * _Nullable error))failure
    {
// 1.创建请求管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer.timeoutInterval = 10.0;
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromSet:[NSSet setWithObjects:@"application/json", @"text/html", @"text/plain", @"text/json",@"text/javascript", nil]];

[manager GET:url parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {
    
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    if (success) {
        success(responseObject);
    }
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {        
    if (failure) {
    failure(error);
    }
}];

}


//表单格式请求

  • (void)postlist:(NSString *_Nullable)url params:(NSMutableDictionary _Nullable)params controller:(UIViewController_Nullable)VC success:(void (^_Nullable)(id _Nullable json))success failure:(void (^_Nullable)(NSError * _Nullable error))failure;

//表单格式请求formdata

+(void)postlist:(NSString *)url
params:(NSMutableDictionary *)params
controller:(UIViewController *)VC
success:(void (^)(id _Nullable))success
failure:(void (^)(NSError * _Nullable))failure{

AFHTTPSessionManager * manager=[AFHTTPSessionManager manager];
//发送给服务器的格式(请求格式)
manager.requestSerializer = [AFJSONRequestSerializer serializer];//json格式
//响应服务器返回数据回来的格式
manager.responseSerializer = [AFJSONResponseSerializer serializer];//json格式
manager.requestSerializer.timeoutInterval = 10.0;
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromSet:[NSSet setWithObjects:@"application/json", @"text/html", @"text/plain", @"text/json",@"text/javascript", nil]];
[manager POST:url parameters:nil constructingBodyWithBlock:^(id  _Nonnull formData) {
    NSArray * allkeys = [params allKeys];
    for (int i = 0; i < allkeys.count; i++)
    {
        NSString * key = [allkeys objectAtIndex:i];
        //因为字典中存储的多种不同的类型,所以必须用id类型去接收它
        id  obj  = [params objectForKey:key];
        NSString* strvalues=[NSString stringWithFormat:@"%@",obj];//id类型转字符串,这里必须先转字符串
       [formData appendPartWithFormData:[strvalues dataUsingEncoding:NSUTF8StringEncoding] name:key];
      NSLog(@"数据格式%@",formData);
    }        
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nonnull responseObject) {
    
    if (success) {
        success(responseObject);
    }       
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    
    if (failure) {
        failure(error);
    }
}];

}

/** 上传多张图片数组 */

  • (void)postImageArray:(NSArray *_Nullable)imageArray andUrl:(NSString *_Nullable)url params:(NSDictionary *_Nullable)params success:(void (^_Nullable)(id _Nullable json))success failure:(void (^_Nullable)(NSError * _Nullable error))failure;

  • (void)posthttprequest:(NSString *_Nullable)url params:(NSMutableDictionary _Nullable)params controller:(UIViewController_Nullable)VC success:(void (^_Nullable)(id _Nullable json))success failure:(void (^_Nullable)(NSError * _Nullable error))failure{

// 1.创建请求管理者
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];//请求数据格式为二进制
manager.responseSerializer = [AFJSONResponseSerializer serializer];//响应数据格式
manager.requestSerializer.timeoutInterval = 10.0;
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromSet:[NSSet setWithObjects:@"application/json", @"text/json" , @"text/html", @"text/plain", @"text/javascript", nil]];

[manager POST:url parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {
    
    
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    if (success) {
        success(responseObject);
    }
    
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    if (failure) {
        failure(error);
    }
    
}];

}

  • (void)postImageArray:(NSArray *_Nullable)imageArray andUrl:(NSString *_Nullable)url params:(NSDictionary *_Nullable)params success:(void (^_Nullable)(id _Nullable json))success failure:(void (^_Nullable)(NSError * _Nullable error))failure{
AFHTTPSessionManager * manager=[AFHTTPSessionManager manager];
//发送给服务器的格式(请求格式)
manager.requestSerializer = [AFJSONRequestSerializer serializer];//json格式
//响应服务器返回数据回来的格式
manager.responseSerializer = [AFJSONResponseSerializer serializer];//json格式
manager.requestSerializer.timeoutInterval = 30.0;
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromSet:[NSSet setWithObjects:@"application/json", @"text/html", @"text/plain", @"text/json",@"text/javascript", nil]];
[manager POST:url parameters:params constructingBodyWithBlock:^(id  _Nonnull formData) {
    if(imageArray.count>0)
    {
        for(NSInteger i=0; i

}

你可能感兴趣的:(AFN的进一步封装)