.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