AFNetworking的再封裝使用

網絡請求的時候最常用到的就是get,post和upload了。

@interface UploadParam : NSObject

/**

*? 圖片的二進制數據

*/

@property (nonatomic, strong) NSData *data;

/**

*? 服務器對應的參數名稱

*/

@property (nonatomic, copy) NSString *name;

/**

*? 文件的名稱(上傳到服務器后,服務器保存的文件名)

*/

@property (nonatomic, copy) NSString *filename;

/**

*? 文件的MIME類型(image/png,image/jpg等)

*/

@property (nonatomic, copy) NSString *mimeType;

@end

@class UploadParam;

/**

*? 網絡請求類型

*/

typedef NS_ENUM(NSUInteger,HttpRequestType) {

/**

*? get請求

*/

HttpRequestTypeGet = 0,

/**

*? post請求

*/

HttpRequestTypePost

};

@interface HttpRequest : NSObject

/**

*? 發送get請求

*

*? @param URLString? 請求的網址字符串

*? @param parameters 請求的參數

*? @param success? ? 請求成功的回調

*? @param failure? ? 請求失敗的回調

*/

+ (void)getWithURLString:(NSString *)URLString

parameters:(id)parameters

success:(void (^)(id responseObject))success

failure:(void (^)(NSError *error))failure;

/**

*? 發送post請求

*

*? @param URLString? 請求的網址字符串

*? @param parameters 請求的參數

*? @param success? ? 請求成功的回調

*? @param failure? ? 請求失敗的回調

*/

+ (void)postWithURLString:(NSString *)URLString

parameters:(id)parameters

success:(void (^)(id responseObject))success

failure:(void (^)(NSError *error))failure;

/**

*? 發送網絡請求

*

*? @param URLString? 請求的網址字符串

*? @param parameters? 請求的參數

*? @param type? ? ? ? 請求的類型

*? @param resultBlock 請求的結果

*/

+ (void)requestWithURLString:(NSString *)URLString

parameters:(id)parameters

type:(HttpRequestType)type

success:(void (^)(id responseObject))success

failure:(void (^)(NSError *error))failure;

/**

*? 上傳圖片

*

*? @param URLString? 上傳圖片的網址字符串

*? @param parameters? 上傳圖片的參數

*? @param uploadParam 上傳圖片的信息

*? @param success? ? 上傳成功的回調

*? @param failure? ? 上傳失敗的回調

*/

+ (void)uploadWithURLString:(NSString *)URLString

parameters:(id)parameters

uploadParam:(UploadParam *)uploadParam

success:(void (^)())success

failure:(void (^)(NSError *error))failure;

#import "HttpRequest.h"

#import "AFNetworking.h"

#import "UploadParam.h"

@implementation HttpRequest

#pragma mark -- GET請求 --

+ (void)getWithURLString:(NSString *)URLString? ? ? ? ? ? ? parameters:(id)parameters? ? ? ? ? ? ? ? success:(void (^)(id))success? ? ? ? ? ? ? ? failure:(void (^)(NSError *))failure?

{? ? ? ??

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];??

? /**? ? *? 可以接受的類型? ? */? ??

manager.responseSerializer = [AFHTTPResponseSerializer serializer];? ?

?/**? ? *? 請求隊列的最大并發數? ? *///? ? manager.operationQueue.maxConcurrentOperationCount = 5;??

? /**? ? *? 請求超時的時間? ? *///? ??

manager.requestSerializer.timeoutInterval = 5;? ??

[manager GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {? ? ? ? if (success) {? ? ? ? ? ? success(responseObject);? ? ? ? }? ? } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {? ? ? ? if (failure) {? ? ? ? ? ? failure(error);? ? ? ? }? ? }];}

#pragma mark -- POST請求 --

+ (void)postWithURLString:(NSString *)URLString? ? ? ? ? ? ? parameters:(id)parameters? ? ? ? ? ? ? ? ? success:(void (^)(id))success? ? ? ? ? ? ? ? ? failure:(void (^)(NSError *))failure?

{? ? ??

? AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];? ? manager.responseSerializer = [AFHTTPResponseSerializer serializer];? ?

?[manager POST:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {? ? ? ? if (success) {? ? ? ? ? ? success(responseObject);? ? ? ? }? ? } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {? ? ? ? if (failure) {? ? ? ? ? ? failure(error);? ? ? ? }? ? }];}#pragma mark -- POST/GET網絡請求 --+ (void)requestWithURLString:(NSString *)URLString? ? ? ? ? ? ? ? ? parameters:(id)parameters? ? ? ? ? ? ? ? ? ? ? ? type:(HttpRequestType)type? ? ? ? ? ? ? ? ? ? success:(void (^)(id))success? ? ? ? ? ? ? ? ? ? failure:(void (^)(NSError *))failure {? ? ? ? AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];? ? manager.responseSerializer = [AFHTTPResponseSerializer serializer];? ? switch (type) {? ? ? ? case HttpRequestTypeGet:? ? ? ? {? ? ? ? ? ? [manager GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {? ? ? ? ? ? ? ? if (success) {? ? ? ? ? ? ? ? ? ? success(responseObject);? ? ? ? ? ? ? ? }? ? ? ? ? ? } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {? ? ? ? ? ? ? ? if (failure) {? ? ? ? ? ? ? ? ? ? failure(error);? ? ? ? ? ? ? ? }? ? ? ? ? ? }];? ? ? ? }? ? ? ? ? ? break;? ? ? ? case HttpRequestTypePost:? ? ? ? {? ? ? ? ? ? [manager POST:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {? ? ? ? ? ? ? ? if (success) {? ? ? ? ? ? ? ? ? ? success(responseObject);? ? ? ? ? ? ? ? }? ? ? ? ? ? } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {? ? ? ? ? ? ? ? if (failure) {? ? ? ? ? ? ? ? ? ? failure(error);? ? ? ? ? ? ? ? }? ? ? ? ? ? }];? ? ? ? }? ? ? ? ? ? break;? ? }}

#pragma mark -- 上傳圖片 --

+ (void)uploadWithURLString:(NSString *)URLString? ? ? ? ? ? ? ? parameters:(id)parameters? ? ? ? ? ? ? ? uploadParam:(UploadParam *)uploadParam? ? ? ? ? ? ? ? ? ? success:(void (^)())success? ? ? ? ? ? ? ? ? ? failure:(void (^)(NSError *))failure {? ? ? ? AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];? ? manager.responseSerializer = [AFHTTPResponseSerializer serializer];? ? [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id_Nonnull formData) {

[formData appendPartWithFileData:uploadParam.data name:uploadParam.name fileName:uploadParam.filename mimeType:uploadParam.mimeType];

} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {

if (success) {

success(responseObject);

}

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

if (failure) {

failure(error);

}

}];

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容