6.AFNetworking實現(xiàn)Get和Post方法

前言

AFNetworking其實實現(xiàn)的原理就是使用NSURLSession類,只不過使用對NSURLSession進行了封裝,使得我們更加使用起來更加的方便, 其中都是通過AFHTTPSessionManager這個類來實現(xiàn)的!!!

1.AFHTTPSessionManager的Get請求:

 NSMutableDictionary *paramter = [NSMutableDictionary dictionary];
 paramter[@"q"] = @"iOS";
 paramter[@"count"] = @"30";
 [[AFHTTPSessionManager manager]GET:@"https://api.douban.com/v2/user" parameters:paramter
 progress:^(NSProgress * _Nonnull downloadProgress) {
 } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"responseObject:%@",responseObject);
 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error:%@",error);
 }];

2.AFHTTPSessionManager的Post請求:

 NSMutableDictionary *paramer = [NSMutableDictionary dictionary];
 paramer[@"q"] = @"iOS";
 paramer[@"count"] = @"30";
 [[AFHTTPSessionManager manager]POST:@"" parameters:paramer 
  progress:^(NSProgress * _Nonnull uploadProgress) {
  } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"請求成功");
  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"請求失敗");
  }];

3.網(wǎng)絡請求封裝類:
NetWookTool.h

#import <Foundation/Foundation.h>
#import <AFNetworking/AFNetworking.h>
typedef void(^successBlock)(id response);
typedef void(^failureBlock)(NSError *error);
@interface NetWookTool : NSObject <NSCopying>
+(instancetype)shareNetWookTool;
-(void)GetWithUrl:(NSString *)url parameter:(id)paramter success:(successBlock)success failure:(failureBlock)failure;
-(void)PostWithUrl:(NSString *)url paramter:(id)paramter success:(successBlock)success failure:(failureBlock)failure;
@end

NetWookTool.m

#import "NetWookTool.h"
#import <AFNetworking/AFNetworking.h>
//靜態(tài)的作用是防止外界訪問
static NetWookTool *_tool = nil;
@implementation NetWookTool
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _tool = [super allocWithZone:zone];
    });
    return _tool;
}
+(instancetype)shareNetWookTool{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _tool = [[NetWookTool alloc]init];
    });
    return _tool;
}
-(id)copyWithZone:(NSZone *)zone{
    return _tool;
}
// AFHTTPSessionManager的設置
-(AFHTTPSessionManager *)manager{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //HTTPS需要的東西了
    //manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    // json的請求
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    // json的響應
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    //xml的響應
    // manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
    //響應的接受的數(shù)據(jù)的格式
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/tml",@"application/json",@"text/json", nil];
    return  manager;
}
-(void)GetWithUrl:(NSString *)url parameter:(id)paramter success:(successBlock)success failure:(failureBlock)failure{
    [[AFHTTPSessionManager manager]GET:url parameters:paramter progress:^(NSProgress * _Nonnull downloadProgress) {
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (responseObject) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (error) {
            failure(error);
        }
    }];
}
-(void)PostWithUrl:(NSString *)url paramter:(id)paramter success:(successBlock)success failure:(failureBlock)failure{
    [[AFHTTPSessionManager manager]POST:url parameters:paramter progress:^(NSProgress * _Nonnull uploadProgress) {
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (responseObject) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (error) {
            failure(error);
        }
    }];
}
@end

結(jié)語: 這個就是我們工作中經(jīng)常使用的網(wǎng)絡請求的封裝類,在我們的工作中經(jīng)常使用,希望能給你帶來好處?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,111評論 25 709
  • AFN什么是AFN全稱是AFNetworking,是對NSURLConnection、NSURLSession的一...
    醉葉惜秋閱讀 1,345評論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,408評論 4 61
  • 就算已成定局,那接下來就由你自己來創(chuàng)造
    妹那么簡單Eunice閱讀 244評論 0 0
  • 2017年 6月2日 星期五 睛(畫了個太陽) 第一節(jié)課下課,我就在教室門口摔了一跤,具體是怎么摔的呢?就是我...
    暗自芳香閱讀 433評論 0 2

友情鏈接更多精彩內(nèi)容