AFN使用:封装工具类

创建新工具类:

.h文件

#import <Foundation/Foundation.h>

@class AFNUploadParam;
@interface AFNHttpTool : NSObject

/**
 *  发送get请求
 *
 *  @param URLString  请求的基本的url
 *  @param parameters 请求的参数字典
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 */
+ (void)GET:(NSString *)URLString
                     parameters:(id)parameters
                        success:(void (^)(id responseObject))success
    failure:(void (^)(NSError *error))failure;

/**
 *  发送post请求
 *
 *  @param URLString  请求的基本的url
 *  @param parameters 请求的参数字典
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 */
+ (void)Post:(NSString *)URLString
 parameters:(id)parameters
    success:(void (^)(id responseObject))success
    failure:(void (^)(NSError *error))failure;
/**
 *  上传请求
 *
 *  @param URLString  请求的基本的url
 *  @param parameters 请求的参数字典
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 */
+ (void)Upload:(NSString *)URLString
  parameters:(id)parameters
 uploadParam:(AFNUploadParam *)uploadParam
     success:(void (^)(id responseObject))success
     failure:(void (^)(NSError *error))failure;

@end


创建的AFNUploadParam;类:

.h文件

#import <Foundation/Foundation.h>

@interface AFNUploadParam : NSObject

/**
 *  上传文件的二进制数据
 */
@property (nonatomic, strong) NSData *data;
/**
 *  上传的参数名称
 */
@property (nonatomic, copy) NSString *name;
/**
 *  上传到服务器的文件名称
 */
@property (nonatomic, copy) NSString *fileName;
/**
 *  上传文件的类型
 */
@property (nonatomic, copy) NSString *mimeType;

@end

.m文件

#import "AFNUploadParam.h"

@implementation CZUploadParam

@end


再回到AFNHttpTool的.m文件

#import "AFNHttpTool.h"
#import "AFNetworking.h"
#import "AFNUploadParam.h"


@implementation CZHttpTool


+ (void)GET:(NSString *)URLString  parameters:(id)parameters  success:(void (^)(id))success  failure:(void (^)(NSError *))failure
{
    // 创建请求管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager  manager];
   
    [mgr  GET:URLString  parameters:parameters  success:^(AFHTTPRequestOperation *operation, id responseObject) {
        // AFN请求成功时候调用block
        // 先把请求成功要做的事情,保存到这个代码块
        if (success) {
            success(responseObject);
        }
        
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        if (failure) {
            failure(error);
        }
    }];
}


+ (void)Post:(NSString *)URLString  parameters:(id)parameters  success:(void (^)(id))success  failure:(void (^)(NSError *))failure
{
    // 创建请求管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];


    [mgr  POST:URLString  parameters:parameters  success:^(AFHTTPRequestOperation *operation, id responseObject) {
       
        if (success) {
            success(responseObject);
        }
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        if (failure) {
            failure(error);
        }
    }];
}


+ (void)Upload:(NSString *)URLString  parameters:(id)parameters  uploadParam:(AFNUploadParam *)uploadParam  success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
    // 创建请求管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
    
    [mgr  POST:URLString  parameters:parameters  constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 上传的文件全部拼接到formData
        
        /**
         *  FileData:要上传的文件的二进制数据
         *  name:上传参数名称
         *  fileName:上传到服务器的文件名称
         *  mimeType:文件类型
         */
        [formData  appendPartWithFileData:uploadParam.data  name:uploadParam.name  fileName:uploadParam.fileName  mimeType:uploadParam.mimeType];
    
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        if (success) {
            success(responseObject);
        }
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        if (failure) {
            failure(error);
        }
    }];

}

@end

这时对于网络请求的工具类的封装。

当对应的业务类使用时:

截选   


+ (void)composeWithStatus:(NSString *)status  image:(UIImage *)image  success:(void (^)())success  failure:(void (^)(NSError *))failure
{
    // 创建参数模型
    AFNComposeParam *param = [AFNComposeParam  param];
    param.status = status;
    
    // 创建上传的模型
    AFNUploadParam *uploadP = [[AFNUploadParam alloc] init];
    uploadP.data = UIImagePNGRepresentation(image);
    uploadP.name = @"pic";
    uploadP.fileName = @"image.png";
    uploadP.mimeType = @"image/png";
    
    // 注意:以后如果一个方法,要传很多参数,就把参数包装成一个模型
    [AFNHttpTool  Upload:@"https://upload.api.weibo.com/2/statuses/upload.json"  parameters:param.keyValues  uploadParam:uploadP  success:^(id responseObject) {
        if (success) {
            success();
        }
    } failure:^(NSError *error) {
        if (failure) {
            failure(error);
        }
    }];
    
    
}
@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值