新建一个网络工具类NetworkTool。
NetworkTool.h文件:
//
// NetworkTool.h
// CRM
//
// Created by Mac on 2017/8/17.
// Copyright © 2017年 Jing. All rights reserved.
//
@interface NetworkTool : AFHTTPSessionManager
typedef void (^SuccessBlock) (NSDictionary *dataDict);
typedef void (^FailBlock) (NSError *error);
/**
创建网络请求工具类的单例
@return 单例类
*/
+ (instancetype)sharedInstance;
/**
使用GET方式发送请求
@param method 请求的方法名
@param paramters 请求的参数集合
@param successBlock 请求成功的回调
@param failBlock 请求失败的回调
*/
- (void)getRequestWithMethod:(NSString *)method
Paramters:(NSDictionary *)paramters
Success:(SuccessBlock)successBlock
Fail:(FailBlock)failBlock;
/**
使用POST方式发送请求
@param method 请求的方法名
@param paramters 请求的参数集合
@param successBlock 请求成功的回调
@param failBlock 请求失败的回调
*/
- (void)postRequestWithMethod:(NSString *)method
Paramters:(NSDictionary *)paramters
Success:(SuccessBlock)successBlock
Fail:(FailBlock)failBlock;
@end
NetworkTool.m文件:
//
// NetworkTool.m
// CRM
//
// Created by Mac on 2017/8/17.
// Copyright © 2017年 Jing. All rights reserved.
//
#import "NetworkTool.h"
#import "Tools.h"
static NSString * const webService = @"http://103.15.217.202:8083/WevService.asmx/";
@interface NetworkTool ()
@property (nonatomic) AFHTTPSessionManager *sessionManager;
@end
@implementation NetworkTool
@synthesize sessionManager;
+ (instancetype)sharedInstance
{
static NetworkTool *instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] initWithBaseURL:nil];
});
return instance;
}
- (void)initSessionManager
{
sessionManager = [AFHTTPSessionManager manager];
sessionManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
// sessionManager.securityPolicy.allowInvalidCertificates = YES;
sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
[sessionManager.requestSerializer setValue: @"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
// [sessionManager.requestSerializer setValue: @"crm" forHTTPHeaderField:@"CallName"];
// [sessionManager.requestSerializer setValue: @"pass" forHTTPHeaderField:@"CallPassword"];
// manager.operationQueue.maxConcurrentOperationCount = 5; //请求队列的最大并发数
sessionManager.requestSerializer.timeoutInterval = kTimeoutInterval;
}
- (void)getRequestWithMethod:(NSString *)method
Paramters:(NSDictionary *)paramters
Success:(SuccessBlock)successBlock
Fail:(FailBlock)failBlock
{
[self initSessionManager];
NSString *urlString = [NSString stringWithFormat:@"%@%@", webService, method];
[sessionManager GET:urlString
parameters:paramters
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (successBlock) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
successBlock(dict);
}
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failBlock) {
failBlock(error);
NSLog(@"网络异常 - T_T%@", error);
}
}
];
}
- (void)postRequestWithMethod:(NSString *)method
Paramters:(NSDictionary *)paramters
Success:(SuccessBlock)successBlock
Fail:(FailBlock)failBlock
{
[self initSessionManager];
NSString *urlString = [NSString stringWithFormat:@"%@%@", webService, method];
[sessionManager POST:urlString
parameters:paramters
progress:nil
success:^(NSURLSessionTask * _Nonnull task, id _Nullable reponseObject) {
[Tools hideHUDLoading];
if (successBlock) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:reponseObject options:NSJSONReadingMutableLeaves error:nil];
dict = [Tools dictionaryWithJsonString:[dict objectForKey:@"d"]];
if ([dict isKindOfClass:[NSDictionary class]]) {
successBlock(dict);
}
}
}
failure:^(NSURLSessionDataTask * _Nonnull task, NSError * _Nonnull error) {
if (failBlock) {
failBlock(error);
[Tools hideHUDLoading];
[Tools showHUDServiceError];
NSLog(@"服務器連接有誤 - T_T\n%@",error);
}
}
];
}
@end