TTNetworkServer
對(duì)AFN的常用方法封裝,支持緩存、批量請(qǐng)求、Cookie設(shè)置、返回?cái)?shù)據(jù)自動(dòng)轉(zhuǎn)換為JSON(包括XML)、圖片壓縮上傳等...
[github]https://github.com/tengshuq/TTNetworkServer
基本用法
依賴的三方框架有AFNetworking、YYCache、MBProgressHUD,使用時(shí)請(qǐng)保證項(xiàng)目中含有這三個(gè)框架~
使用時(shí)#import "TTNetworkServer.h"
基本設(shè)置
//
TTNetworkConfig *config = [TTNetworkConfig standardConfig];
config.debugLogEnabled = YES;
config.baseURL = @"http://apicloud.mob.com";
如果需要為所有的請(qǐng)求添加公共參數(shù),比如時(shí)間戳、版本號(hào)什么的,使用:
config.commonParameters = @{@"key1":@"value1"};
Cookie的使用
如果需要使用cookie,先設(shè)置
config.cookieEnabled = YES;
然后在獲取cookie的請(qǐng)求里面調(diào)用
[TTNetworkServer getCookie:<#(NSURLSessionDataTask *)#>]
退出時(shí)清除cookie
[TTNetworkServer clearCookie]
如果需要設(shè)置本地Cookie,請(qǐng)調(diào)用
[TTNetworkServer setLocalCookieWithCookieName:(NSArray *)names values:(NSArray *)values originURL:(NSString *)url expires:(NSTimeInterval)expires]
網(wǎng)絡(luò)請(qǐng)求
基本請(qǐng)求
[TTNetworkServer GET:JointURL parameters:@{@"key":@"112fcd924b710"} cacheResponse:nil succeess:^(NSURLSessionDataTask *task, NSDictionary *responseObject) {
NSLog(@"網(wǎng)絡(luò)獲取的數(shù)據(jù) %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];
帶緩存的請(qǐng)求
[TTNetworkServer GET:JointURL parameters:@{@"key":@"112fcd924b710"} cacheResponse:^(NSDictionary *responseCache) {
NSLog(@"緩存的數(shù)據(jù)%@",responseCache);
} succeess:^(NSURLSessionDataTask *task, NSDictionary *responseObject) {
NSLog(@"網(wǎng)絡(luò)獲取的數(shù)據(jù) %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];
批量請(qǐng)求
static NSString *const ConvertJSONFail = @"https://www.baidu.com";
static NSString *const JSON = @"https://alpha-api.app.net/stream/0/posts/stream/global";
static NSString *const JointURL = @"car/brand/query";
static NSString *const XML = @"http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionDataset";
TTNetworkServer *server1 = [TTNetworkServer addGET:ConvertJSONFail parameters:nil cacheResponse:nil];
TTNetworkServer *server2 = [TTNetworkServer addGET:JSON parameters:nil cacheResponse:nil];
TTNetworkServer *server3 = [TTNetworkServer addGET:JointURL parameters:@{@"key":@"112fcd924b710"} cacheResponse:nil];
TTNetworkServer *server4 = [TTNetworkServer addGET:XML parameters:nil cacheResponse:nil];
[TTNetworkServer startBatchRequest:@[server1,server2,server3,server4] cacheResponse:nil success:^(NSArray<id> *res) {
//返回的數(shù)據(jù)順序?yàn)榧尤胝?qǐng)求的順序
id res0 = res[0];
id res1 = res[1];
id res2 = res[2];
id res3 = res[3];
} failure:^(NSArray<NSError *> *err) {
} task:^(NSArray<NSURLSessionDataTask *> *task) {
}];
取消請(qǐng)求
1.取消某個(gè)URL的請(qǐng)求:
[TTNetworkServer cancelTaskWithURL:google]
2.取消所有請(qǐng)求:
[TTNetworkServer cancelAllTask]
3.退出VC時(shí)取消VC上的所有請(qǐng)求,在VC里面調(diào)用
[self cancelAllTasksWhileViewDidDisappear:YES];
獲取和清除緩存
[TTNetworkServer allCacheSize] //獲取緩存
[TTNetworkServer clearCache] //清除緩存
[TTNetworkServer clearCacheWithProgress:{} completion:{}] //清除緩存回調(diào)進(jìn)度
監(jiān)聽和獲取網(wǎng)絡(luò)狀態(tài)
監(jiān)聽網(wǎng)絡(luò)狀態(tài)的變化
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(aSelector) name:TTNetworkStatusDidChangeNotification object:nil]
獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)
[TTNetworkServer networkStatusType]