封装的网络请求

.h文件

#import <Foundation/Foundation.h>

/**

 * 请求成功的 Block

 @param responseObject 请求成功返回的数据

 */

typedef void (^CJResponseSuccess)(id responseObject);

/**

 * 请求失败的 Block

 @param error 报错信息

 */

typedef void (^CJResponseFail)(NSURLSessionDataTask *task, NSError *error);

/**

 * 上传或者下载进度

 @param progress 进度

 */

typedef void (^CJProgress)(NSProgress *progress);

/**

 * 返回新的Token

 @param newToken 新token

 */

typedef void (^CJGetNewToken)(id newToken);

@interface CJRequestManager : NSObject

@property (nonatomic) NSString *asd;

+ (void)test111PostRequestWithUrl:(NSString *)suffixURL andHeaderDict:(NSDictionary *)headerDict andBodyDict:(NSDictionary *)bodyDict withSuccessBlock:(CJResponseSuccess)success andFailureBlock:(CJResponseFail)failure;

+ (void)testPostRequestWithUrl:(NSString *)suffixURL andHeaderDict:(NSDictionary *)headerDict andBodyDict:(NSDictionary *)bodyDict withSuccessBlock:(CJResponseSuccess)success andFailureBlock:(CJResponseFail)failure;

/**

  * POST 请求

 @param suffixURL 请求路劲

 @param headerDict 请求参数头

 @param bodyDict 请求参数体

 @param success 成功返回

 @param failure 报错信息

 */

+ (void)postRequestWithUrl:(NSString *)suffixURL andHeaderDict:(NSDictionary *)headerDict andBodyDict:(NSDictionary *)bodyDict withSuccessBlock:(CJResponseSuccess)success andFailureBlock:(CJResponseFail)failure;

/**

  * GET 请求

 @param suffixURL 请求路径

 @param params 参数

 @param success 成功返回

 @param fail 报错信息

 */

+ (void)getRequestWithSuffixURL:(NSString *)suffixURL andParameter:(NSDictionary *)params success:(CJResponseSuccess)success fail:(CJResponseFail)fail;

/**

  * 下载文件

 @param suffixURL 下载地址

 @param fileURL 保存文件路径

 @param progress 进度

 @param success 下载成功返回

 @param fail 报错信息

 */

+ (void)downloadFileWithSuffixURL:(NSString *)suffixURL savePathURL:(NSURL *)fileURL progress:(CJProgress)progress success:(CJResponseSuccess)success fail:(CJResponseFail)fail;

/**

 * 刷新Token fengyong

 @param oldToken 原来的Token

 @param userid 用户的id

*/

+ (void )refreshToken:(NSString *)oldToken withUserId:(NSString *)userid newToken:(CJGetNewToken)new_Token;

@end

.m文件

#import "CJRequestManager.h"

#import "AFNetworking.h"

static NSString * const hostUrl = @"http://app.17ok.com/index.php";

@implementation CJRequestManager

+ (void)getRequestWithSuffixURL:(NSString *)suffixURL andParameter:(NSDictionary *)params success:(CJResponseSuccess)success fail:(CJResponseFail)fail{

    

    AFHTTPSessionManager *manager = [CJRequestManager createSessionManager];

    

    NSString *requestURL = [hostUrl stringByAppendingString:suffixURL];

    [manager GET:requestURL parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {

        

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        

        

        success(responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        

        fail(task, error);

    }];

}

+(void)testPostRequestWithUrl:(NSString *)suffixURL andHeaderDict:(NSDictionary *)headerDict andBodyDict:(NSDictionary *)bodyDict withSuccessBlock:(CJResponseSuccess)success andFailureBlock:(CJResponseFail)failure{

    

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    [manager.requestSerializer setValue:@"application/json"     forHTTPHeaderField:@"Content-Type"];

    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    manager.responseSerializer = [AFJSONResponseSerializer serializer];

    

    NSMutableDictionary *requestDict = [NSMutableDictionary dictionary];

    if (headerDict == nil) {

        return;

    }

    

    [requestDict setObject:headerDict forKey:@"header"];

    if (bodyDict != nil) {

        [requestDict setObject:bodyDict forKey:@"body"];

    }

    

    NSString *requestURL = [NSString stringWithFormat:@"https://app.17ok.com:8443/financenews%@",suffixURL];

    

    [manager POST:requestURL parameters:requestDict progress:^(NSProgress * _Nonnull uploadProgress) {

        

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        

        success(responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        failure(task, error);

    }];

}

+(void)postRequestWithUrl:(NSString *)suffixURL andHeaderDict:(NSDictionary *)headerDict andBodyDict:(NSDictionary *)bodyDict withSuccessBlock:(CJResponseSuccess)success andFailureBlock:(CJResponseFail)failure{

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    [manager.requestSerializer setValue:@"application/json"     forHTTPHeaderField:@"Content-Type"];

    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    manager.responseSerializer = [AFJSONResponseSerializer serializer];

    manager.requestSerializer.timeoutInterval = 14.f;

    NSMutableDictionary *requestDict = [NSMutableDictionary dictionary];

    if (headerDict == nil) {

        return;

    }

    

    [requestDict setObject:headerDict forKey:@"header"];

    if (bodyDict != nil) {

        [requestDict setObject:bodyDict forKey:@"body"];

    }

    

    NSString *urlStr = [NSString stringWithFormat:@"%@%@",hostUrl,suffixURL];

    CJLog(@"请求的url --------------------------------------------------------------------------%@",urlStr);

    CJLog(@"请求的数据体 --------------------------------------------------------------------------- %@",requestDict);

    [manager POST:urlStr parameters:requestDict progress:^(NSProgress * _Nonnull uploadProgress) {

        

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        

        success(responseObject);

    CJLog(@"返回的参数 ------------------------------------------------------------------------ %@",responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        failure(task, error);

    }];

}

+ (AFHTTPSessionManager *)createSessionManager{

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    manager.responseSerializer = [AFJSONResponseSerializer serializer];

    return manager;

}

+ (id)responseConfiguration:(id)responseObject{

    NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];

    return dic;

}

+ (void)refreshToken:(NSString *)oldToken withUserId:(NSString *)userid newToken:(CJGetNewToken)new_Token{

    

    NSString *urlStr = @"/cjvuser/reflush";

    NSMutableDictionary *headerDic = [NSMutableDictionary dictionary];

    [headerDic setObject:userid forKey:@"userid"];

    [headerDic setObject:oldToken forKey:@"token"];

    

    NSMutableDictionary *bodyDic = [NSMutableDictionary dictionary];

    [self postRequestWithUrl:urlStr andHeaderDict:headerDic andBodyDict:bodyDic withSuccessBlock:^(id responseObject) {

        

//        NSString * newToken = responseObject;

        new_Token(responseObject);

    } andFailureBlock:^(NSURLSessionDataTask *task, NSError *error) {

        CJLog(@"---- 刷新Toekn Error %@", error);

    }];

}

@end

原文地址:https://www.cnblogs.com/whx060900/p/8136120.html