拿走即用之afn封裝(OC版)

GeorginaPri 8年前發布 | 21K 次閱讀 IOS iOS開發 移動開發

afn封裝

一旦AFN有較大的變動,用到AFN的項目需要更改很多的地方,為了避免這種情況,一般會對AFN封裝出一個類,這樣有了變動之后,只需要更改這個類即可(代碼如下)

.h文件

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, RequestMethod) { post, get };

@interface NetworkTools : NSObject

  • (instancetype)shareNetworkTools;

/**

  • requestMethod:請求方式
  • urlString:請求地址
  • parameters:請求參數
  • responseBlock:請求成功或失敗的回調 */
  • (void)requestWithMethod:(RequestMethod)requestMethod andUrlString:(NSString )urlString andParameters:(id) parameters andFinished:(void(^)(id response, NSError error))responseBlock;

/**

  • data:上傳資料
  • name:上傳資料的名字
  • urlString:請求地址
  • parameters:請求參數
  • responseBlock:請求成功或失敗的回調 */
  • (void)requestWithData:(NSData )data andName:(NSString )name andUrlString:(NSString )urlString andParameters:(id) parameters andFinished:(void(^)(id response, NSError error))responseBlock;

@end</code></pre>

.m文件

#import "NetworkTools.h"

import <AFNetworking.h>

@implementation NetworkTools

  • (instancetype)shareNetworkTools { static NetworkTools *networkTools = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{

      networkTools = [[NetworkTools alloc] init];
    

    }); return networkTools; }

  • (void)requestWithMethod:(RequestMethod)requestMethod andUrlString:(NSString )urlString andParameters:(id) parameters andFinished:(void(^)(id response, NSError error))responseBlock { // 定義成功的block void (^success)(NSURLSessionDataTask dataTask, id responseObject) = ^(NSURLSessionDataTask dataTask,id responseObject) {

      responseBlock(responseObject, nil);
    

    }; // 定義失敗的block void (^failure)(NSURLSessionDataTask dataTask,NSError error) = ^(NSURLSessionDataTask dataTask,NSError error) {

      responseBlock(nil, error);
    

    }; if (requestMethod == get) {

      [[AFHTTPSessionManager manager] GET:urlString parameters:parameters success:success failure:failure];
    

    } else {

      [[AFHTTPSessionManager manager] POST:urlString parameters:parameters success:success failure:failure];
    

    } }

  • (void)requestWithData:(NSData )data andName:(NSString )name andUrlString:(NSString )urlString andParameters:(id) parameters andFinished:(void(^)(id response, NSError error))responseBlock { void (^success)(NSURLSessionDataTask dataTask, id responseObject) = ^(NSURLSessionDataTask dataTask,id responseObject) {

      responseBlock(responseObject, nil);
    

    }; void (^failure)(NSURLSessionDataTask dataTask,NSError error) = ^(NSURLSessionDataTask dataTask,NSError error) {

      responseBlock(nil, error);
    

    }; [[AFHTTPSessionManager manager] POST:urlString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {

      [formData appendPartWithFileData:data name:name fileName:@"aa" mimeType:@"application/octet-stream"];
    

    } success:success failure:failure]; }

@end</code></pre>


via:http://www.jianshu.com/p/37ba814bb66d
 

 本文由用戶 GeorginaPri 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!