網(wǎng)上也有很多的對(duì)AFNetworking進(jìn)行封裝的方法霞赫,此處我只是簡單的記錄一下肥矢;
首先,我們創(chuàng)建一個(gè)繼承與NSObject的類橄抹,定義兩個(gè)屬性,分別是請(qǐng)求成功和請(qǐng)求失敗的玉锌,.h中的代碼如下:
#import <Foundation/Foundation.h>
typedef void (^SuccessBlock)(NSDictionary *data);
typedef void (^FailureBlock)(NSError *error);
@interface SYNetworkingManager : NSObject
@property (nonatomic, copy) SuccessBlock successBlock;
@property (nonatomic, copy) FailureBlock failureBlock;
/**
* 發(fā)送get請(qǐng)求
*
* @param URLString 請(qǐng)求的網(wǎng)址字符串
* @param parameters 請(qǐng)求的參數(shù)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*/
+ (void)getWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock;
/**
* 發(fā)送post請(qǐng)求
*
* @param URLString 請(qǐng)求的網(wǎng)址字符串
* @param parameters 請(qǐng)求的參數(shù)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*/
+ (void)postWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock;
@end
.m中的實(shí)現(xiàn)如下:
+ (void)getWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
/**
* 可以接受的類型
*/
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
/**
* 請(qǐng)求隊(duì)列的最大并發(fā)數(shù)
*/
// manager.operationQueue.maxConcurrentOperationCount = 5;
/**
* 請(qǐng)求超時(shí)的時(shí)間
*/
manager.requestSerializer.timeoutInterval = outTime;
[manager GET:urlString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (successBlock) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
successBlock(dic);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failureBlock) {
failureBlock(error);
NSLog(@"網(wǎng)絡(luò)異常 - T_T%@", error);
}
}];
}
+ (void)postWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer.timeoutInterval = outTime;
[manager POST:urlString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (successBlock) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
successBlock(dic);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failureBlock) {
failureBlock(error);
NSLog(@"網(wǎng)絡(luò)異常 - T_T%@", error);
}
}];
}
以上只是對(duì)post和get請(qǐng)求的封裝,如果有好的建議和好的文章榄融,我很樂意學(xué)習(xí)!