• 基于AFNetworking封装的网络请求工具类【原创】


    今天给大家共享一个我自己封装的网络请求类,希望能帮助到大家。

    前提,导入AFNetworking框架,


    关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改成如下即可:

    self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"image/png",@"text/html",nil];

    GGRequest.h

    #define JSON 100

    #define XML  101

    #define DATA 102

     #define kPOST 200

    #define kGET  201

    为了方便你的使用,建议你把这几个宏定义放在pch文件中,如果不知道pch文件是什么那就放在你将要做网络请求的类里面。

     1 #import <Foundation/Foundation.h>
     2 
     3 @interface GGRequest : NSObject
     4 /**
     5  *  网络请求方法
     6  *
     7  *  @param url          将要访问的链接
     8  *  @param param        传入的参数
     9  *  @param requestStyle 请求方式
    10  *  @param serializer   数据返回形式
    11  *  @param success      请求成功后调用
    12  *  @param failure      请求失败后调用
    13  */
    14 
    15 + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
    16                      failure:(void (^)(NSError *error))failure;
    17 
    18 @end

    GGRequest.m

     1 #import "GGRequest.h"
     2 #import "AFNetworking.h"
     4 #import "MBProgressHUD+MJ.h"//mj进一步封装的显示进程的类。
     5 
     6 
     7 
     8 @implementation GGRequest
     9 
    10 /**
    11  *  网络请求方法
    12  *
    13  *  @param url          将要访问的链接
    14  *  @param param        传入的参数
    15  *  @param requestStyle 请求方式
    16  *  @param serializer   数据返回形式
    17  *  @param success      请求成功后调用
    18  *  @param failure      请求失败后调用
    19  */
    20 + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
    21                    failure:(void (^)(NSError *error))failure
    22 {
    23     // 创建请求 管理者
    24     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    25     
    26     // 设置序列化器
    27     switch(serializer)
    28     {
    29         case 100:
    30         {
    31            // manager.requestSerializer = [AFJSONRequestSerializer serializer];
    32             [manager setResponseSerializer:[AFJSONResponseSerializer serializer]];//默认(返回的是json并自动解析成数组或字典)
    33         }break;
    34         case 101:
    35         {
    36   
    37             [manager setResponseSerializer:[AFXMLParserResponseSerializer serializer]];//返回的是xml,afn不支持xml解析
    38         }break;
    39         case 102:
    40         {
    41            // manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    42             [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];//返回的是data并自动解析成数组或字典
    43             
    44         }break;
    45     }
    46 
    47     // 3.发送请求
    48     if(requestStyle == 200)
    49     {
    50         [manager POST:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject)
    51         {
    52            DLog(@"请求成功");
    53            DLog(@"返回的数据类型是:%@", [responseObject class]);
    54            success(responseObject);
    55             
    56         } failure:^(AFHTTPRequestOperation *operation, NSError *error)
    57         {
    58            DLog(@"请求失败");
    59            DLog(@"%@", error);
    60     
    61         }];
    62         
    63     }
    64     else if(requestStyle == 201)
    65     {
    66         [manager GET:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
    67             DLog(@"请求成功");
    68             DLog(@"返回的数据类型是:%@", [responseObject class]);
    69             DLog(@"%@", responseObject);
    70             success(responseObject);
    71             
    72         } failure:^(AFHTTPRequestOperation *operation, NSError *error)
    73          {
    74              DLog(@"请求失败");
    75              DLog(@"%@", error);
    76              
    77          }];
    78         
    79      }
    80 }
    81 
    82 @end
  • 相关阅读:
    IIS7配置URL Rewrite链接重写
    wordpress导航菜单的链接支持弹出新页面
    c++绝对是拯救了世界,特别是程序员
    Linux 磁盘坏道检测和修复
    centos里mysql无法用localhost连接的解决方法
    php扩展开发
    IP多播
    因特网的路由选择协议
    ICMP协议
    ARP协议
  • 原文地址:https://www.cnblogs.com/g-ios/p/4582183.html
Copyright © 2020-2023  润新知