之前沒(méi)啥代碼經(jīng)驗(yàn),每個(gè)接口的請(qǐng)求都還需要重新初始化請(qǐng)求對(duì)象,感覺(jué)太low了绍在,現(xiàn)在抽空把網(wǎng)絡(luò)請(qǐng)求封裝了一下,優(yōu)化下代碼
首先建個(gè)類里面用來(lái)封裝網(wǎng)絡(luò)請(qǐng)求的方法,然后在控制器里面來(lái)請(qǐng)求接口的參數(shù)偿渡,然后把請(qǐng)求成功的數(shù)據(jù)在返回到控制器里面臼寄,進(jìn)而解析數(shù)據(jù)
例:Networkconnect
在Network connect.h
@interface Networkconnect : NSObject
typedef void (^resultBlock)(id responseObject);//返回?cái)?shù)據(jù)
+(AFHTTPSessionManager*)getSession;
//網(wǎng)絡(luò)請(qǐng)求
+(void)requestWithApi:(id)Api Params:(id)Params type:(NSString *)type withBlock:(resultBlock)block;
@end
在Network connect.m
#import "Networkconnect.h"
@implementation Networkconnect
+(AFHTTPSessionManager*)getSession{
//網(wǎng)絡(luò)請(qǐng)求初始化
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
[sessionManager.securityPolicy setAllowInvalidCertificates:YES];
sessionManager.requestSerializer.timeoutInterval = 10.f;//改成10s
sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];//回復(fù)序列化
sessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
//? ? ? ? sessionManager.requestSerializer.stringEncoding = NSUTF8StringEncoding;
sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/html",@"image/jpeg",@"image/png",@"application/octet-stream",@"text/json",@"text/javascript",nil];
return sessionManager;
}
#pragma mark - 網(wǎng)絡(luò)請(qǐng)求
+(void)requestWithApi:(id)Api Params:(id)Params type:(NSString *)type withBlock:(resultBlock)block {
//接口
NSString *hostUrl = [NSString stringWithFormat:@"%@",Api];
if ([type isEqualToString:@"GET"]) {
NSString *params = @"";
for (id obj in Params) {
if (params.length==0) {
params = [NSString stringWithFormat:@"%@=%@",obj,Params[obj]];
}else{
params = [NSString stringWithFormat:@"%@&%@=%@",params,obj,Params[obj]];
}
}NSString *getStr = [NSString stringWithFormat:@"%@?%@",hostUrl,params];
NSLog(@"getParams->%@",getStr);
[[Networkconnect getSession] GET:getStr parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {
NSLog(@"responseObject->%@",responseObject);
block(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error:%@",error);
}];
}else{
NSLog(@"postParams->%@",Params);
[[Networkconnect getSession] POST:hostUrl parameters:Params progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {
NSLog(@"responseObject->%@",responseObject);
block(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error->%@",error);
}];
}
}
@end
下面就是控制器里面要做的事了,調(diào)用方法傳參數(shù)溜宽,以及數(shù)據(jù)的解析吉拳,在這里就不多說(shuō)了