美文网首页
网络请求的封装

网络请求的封装

作者: EncourageMan | 来源:发表于2017-04-18 10:28 被阅读0次

之前没啥代码经验,每个接口的请求都还需要重新初始化请求对象,感觉太low了,现在抽空把网络请求封装了一下,优化下代码

首先建个类里面用来封装网络请求的方法,然后在控制器里面来请求接口的参数,然后把请求成功的数据在返回到控制器里面,进而解析数据

例:Networkconnect

在Network connect.h

@interface Networkconnect : NSObject

typedef void (^resultBlock)(id responseObject);//返回数据

+(AFHTTPSessionManager*)getSession;

//网络请求

+(void)requestWithApi:(id)Api Params:(id)Params type:(NSString *)type withBlock:(resultBlock)block;

@end

在Network connect.m

#import "Networkconnect.h"

@implementation Networkconnect

+(AFHTTPSessionManager*)getSession{

//网络请求初始化

AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];

[sessionManager.securityPolicy setAllowInvalidCertificates:YES];

sessionManager.requestSerializer.timeoutInterval = 10.f;//改成10s

sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];//回复序列化

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 - 网络请求

+(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

下面就是控制器里面要做的事了,调用方法传参数,以及数据的解析,在这里就不多说了

相关文章

网友评论

      本文标题:网络请求的封装

      本文链接:https://www.haomeiwen.com/subject/orrfzttx.html