二次封装AFNetworking的网络请求

新建一个网络工具类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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值