对AFNetworking简单封装GET,POST请求(block方法)

AFNetworking是一个非常方便的网络请求库,可以轻松实现各种网络请求,比如经常使用的GET请求、POST请求,以及上传多张图片等,下面介绍对AFNetworking简单封装GET,POST请求。

1 调用

- (void)test
{
    NSString *url = @""; //请求的url
    NSDictionary *params = @{@"key":@"value"}; //请求的参数
    [PSJWebRequestManager asynRequestWithUrl:url
                                      method:PSJRequestGet     //设置post或get
                                      params:params
                                      finish:^(PSJResult *vResult) {
                                          NSLog(@"错误码:%ld 错误信息:%@ 返回响应内容:%@",(long)vResult.error.errorCode,vResult.error.description,vResult.result);
        
    } fail:^(PSJResult *vResult) {
        
    }];
}

2 封装GET,POST请求,block回调响应结果。

- (void)requestWithUrl:(NSString *)url method:(PSJRequestMethods)method params:(id)params
{
    //    NSString *requstUrl = [NSString stringWithFormat:@"%@%@",GM_HOST_URL,url];
    NSString *requstUrl = [NSString stringWithFormat:@"%@/%@",[self psj_hostUrl],
                           url];
    
    NSMutableDictionary *mParams = [NSMutableDictionary dictionary];
    
    if ([params isKindOfClass:[NSDictionary class]]) {
        if (params != nil) {
            [mParams addEntriesFromDictionary:params];
        }
        
    }
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/plain",@"application/json",nil];
    manager.requestSerializer.timeoutInterval = [self psj_timeOutInter];
    
    
    if (method == PSJRequestGet) {
        
        NSString *url_get = [self fitUrl:requstUrl params:mParams];
        
        
        
        [manager GET:url_get parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            
            PSJResult *vresult = [[PSJResult alloc] init];
            vresult.result = responseObject;
            
            vresult.error = [self errorWithDict:vresult.result];
            
            if (vresult.result == nil) {
                self.failedBlock(vresult);
            }
            else{
                self.finishBlock(vresult);
            }
            
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            
            PSJResult *vresult = [[PSJResult alloc] init];
            vresult.error = [PSJError errorWithNSError:error];
            self.failedBlock(vresult);
            
        }];
    }
    else if (method == PSJRequestPost) {
        requstUrl = [requstUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        
        [manager POST:requstUrl parameters:mParams success:^(AFHTTPRequestOperation *operation, id responseObject) {
            
            PSJResult *vresult = [[PSJResult alloc] init];
            vresult.result = responseObject;
            
            vresult.error = [self errorWithDict:vresult.result];
            
            if (vresult.result == nil) {
                self.failedBlock(vresult);
            }
            else{
                self.finishBlock(vresult);
            }
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            
            PSJResult *vresult = [[PSJResult alloc] init];
            vresult.error = [PSJError errorWithNSError:error];
            self.failedBlock(vresult);
            
        }];
    }
    
}

3 PSJResult响应结果封装类

@interface PSJResult : NSObject


/**
 *  请求结果
 */
@property (nonatomic,strong) id result;
/**
 *  请求错误
 */
@property (nonatomic,strong) PSJError *error;

@end


4 PSJError响应错误封装类

/*!
 @class
 @brief SDK错误信息定义类
 @discussion
 */

@interface PSJError : NSObject

/*!
 @property
 @brief 错误代码
 */
@property (nonatomic) GMErrorType errorCode;

/*!
 @property
 @brief 错误信息描述
 */
@property (nonatomic, copy) NSString *description;

/*!
 @method
 @brief 创建一个EMError实例对象
 @param errCode 错误代码
 @param description 错误描述信息
 @discussion
 @result 错误信息描述实例对象
 */
+ (PSJError *)errorWithCode:(GMErrorType)errCode
            andDescription:(NSString *)description;

/*!
 @method
 @brief 通过NSError对象, 生成一个GMError对象
 @param error NSError对象
 @discussion
 @result 错误信息描述实例对象
 */
+ (PSJError *)errorWithNSError:(NSError *)error;

@end

DEMO地址: http://download.csdn.net/detail/jueyi1127/9616128

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值