笔记一:判断是get或者是post方法(需要SBJson框架,ASIFormDataRequest框架)
pch中
#define NSURLDATA(__url__) [NSURL URLWithString:__url__]
#import "ModelData.h"
#import "JSON.h"
#import "AppDelegate.h"
@class AppDelegate;
@implementation ModelData
+ (void)getinit:(NSString *)url dictionaryParams:(NSDictionary *)params finishBlock:(finishCompletion)finishBlock failedBlock:(failedCompletion)faiedBlock
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0), ^{
[selfstartRequest:paramsurl:urlisGet:NOfinishBlock:finishBlockfailedBlock:faiedBlock];
});
}
+ (void)getinit:(NSString *)url finishBlock:(finishCompletion)finishBlock failedBlock:(failedCompletion)faiedBlock
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0), ^{
[selfstartRequest:nilurl:urlisGet:YESfinishBlock:finishBlockfailedBlock:faiedBlock];
});
}
+ (void)startRequest:(NSDictionary *)params url:(NSString *)urlstring isGet:(BOOL)isGet finishBlock:(finishCompletion)finishBlock failedBlock:(failedCompletion)faiedBlock
{
//获取全局变量
AppDelegate *appDelegate = (AppDelegate *)[[UIApplicationsharedApplication]delegate];
// NSLog(@"==%@",urlstring);
__weakASIFormDataRequest *requestData = [ASIFormDataRequestrequestWithURL:NSURLDATA(urlstring)];//链接网页
[requestDatasetTimeOutSeconds:12];//设置请求超时时间
[requestData setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];//永久存储方式
[requestData setCachePolicy:ASIFallbackToCacheIfLoadFailsCachePolicy];
//登录不成功就撤销
[requestDatasetDownloadCache:appDelegate.myCache];
//下载缓存
[requestDatasetTimeOutSeconds:12];
[requestData setNumberOfTimesToRetryOnTimeout:3];//设置请求超时时,设置重试的次数
if (isGet) {
[requestDatasetRequestMethod:@"GET"];
}else {
[requestDatasetRequestMethod:@"POST"];
for (int i =0 ; i < [paramscount] ; i++){
NSString *key = [paramsallKeys][i];
[requestDataaddPostValue:params[key]forKey:key];
}
}
requestData.completionBlock = ^{
NSData *data = [requestDataresponseData];
NSString *response = [[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];
NSLog(@"解析成功==%@",response);
NSDictionary *ret = [responseJSONValue];
dispatch_async(dispatch_get_main_queue(), ^{
finishBlock(ret);
//判断返回的数据是否来自本地缓存
if (requestData.didUseCachedResponse) {
NSLog(@"使用缓存数据");
}else {
NSLog(@"请求网络数据");
}
});
};
requestData.failedBlock = ^{
// NSLog(@"网络请求错误:%@",[requestData error]);
dispatch_async(dispatch_get_main_queue(), ^{
faiedBlock([requestDataerror]);
});
};
[requestDatastartAsynchronous];
}
使用:
- (void)loadInitData{
[selfloading:@"正在加载"];//风火轮
[ModelDatagetinit:[NSStringstringWithFormat:initUrl,firstUrl]finishBlock:^(NSDictionary *finishData) {//(判断网址是get、post方法)
if ([finishData[@"success_code"]intValue] == 200) {
[product_FClassListaddObjectsFromArray:finishData[@"success_message"][@"productFClassList"]];
[headersetValue:finishData[@"success_message"][@"ad_list"]forKey:@"listModel"];
[footersetValue:product_FClassListforKey:@"listModel"];
}
[selfloadhidden:0.];
}failedBlock:^(NSError *error) {
[selfloadhidden:0.];
[[TKAlertCenterdefaultCenter] postAlertWithMessage:@"加载失败,请重试!"];
}];
}