AFNetworking的封装 项目使用

来源:互联网 发布:js屏蔽手机运营商广告 编辑:程序博客网 时间:2024/06/06 10:39
//
//  BaseNetManager.h
//  BaseProject
//
//  Created by zhangjian on 15/10/21.
//  Copyright © 2015年 zhangjian. All rightsreserved.
//

#import

#define kCompletionHandle completionHandle:(void(^)(id model,NSError *error))completionHandle;

@interface BaseNetManager : NSObject


+ (id)GET:(NSString *)path parameters:(NSDictionary *)paramscompletionHandler:(void(^)(id responseObj, NSError*error))complete;


+ (id)POST:(NSString *)path parameters:(NSDictionary *)paramscompletionHandler:(void(^)(id responseObj, NSError*error))complete;


+ (NSString *)percentPathWithPath:(NSString *)pathparams:(NSDictionary *)params;

@end


//
//  BaseNetManager.m
//  BaseProject
//
//  Created by zhangjian on 15/10/21.
//  Copyright © 2015年 zhangjian. All rightsreserved.
//

#import "BaseNetManager.h"

static AFHTTPSessionManager *manager = nil;

@implementation BaseNetManager

+ (AFHTTPSessionManager *)sharedAFManager{
    staticdispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
       manager = [AFHTTPSessionManager manager];
// 此处添加了 @"text/plain"   这样才能够解析喜马拉雅 第二个请求
       manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"text/html", @"application/json", @"text/json",@"text/javascript", @"text/plain", nil];
    });
    returnmanager;
}

//http://cache.tuwan.com/app/?appid=1&class=heronews&mod=八卦&appid=1&appver=2.1

//方法:把path和参数拼接起来,把字符串中的中文转换为 百分号 形势,因为有的服务器不接收中文编码
+ (NSString *)percentPathWithPath:(NSString *)pathparams:(NSDictionary *)params{
   NSMutableString *percentPath =[NSMutableStringstringWithString:path];
    NSArray*keys = params.allKeys;
    NSIntegercount = keys.count;

    for (int i =0; i < count; i++) {
       if (i == 0) {
           [percentPath appendFormat:@"?%@=%@", keys[i],params[keys[i]]];
       }else{
           [percentPath appendFormat:@"&%@=%@", keys[i],params[keys[i]]];
       }
    }
//把字符串中的中文转为%号形势
    return[percentPathstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

+ (id)GET:(NSString *)path parameters:(NSDictionary *)paramscompletionHandler:(void(^)(id responseObj, NSError*error))complete{
    //打印网络请求,DDLog  与  NSLog 功能一样
   DDLogVerbose(@"Request Path: %@, params %@", path, params);
    return[[self sharedAFManager] GET:path parameters:paramssuccess:^void(NSURLSessionDataTask * task, id responseObject){
       complete(responseObject, nil);
    }failure:^void(NSURLSessionDataTask * task, NSError * error) {
       complete(nil, error);
    }];
}

+ (id)POST:(NSString *)path parameters:(NSDictionary *)paramscompletionHandler:(void(^)(id responseObj, NSError*error))complete{
    return[[self sharedAFManager] POST:path parameters:paramssuccess:^void(NSURLSessionDataTask * task, id responseObject){
       complete(responseObject, nil);
    }failure:^void(NSURLSessionDataTask * task, NSError * error) {
       [self handleError:error];
       complete(nil, error);
    }];
}

+ (void)handleError:(NSError *)error{
    [[self new]showErrorMsg:error]; //弹出错误信息
}

@end

0 0