AFNetWorking的方法,平時使用也就夠用了,但是為了在以后程序中可以多次利用,所以進(jìn)行了二次封裝。我的每一個項目中都會創(chuàng)建一個基類,在基類中進(jìn)行navigationController的設(shè)置,以及網(wǎng)絡(luò)請求的封裝。這樣,在整個項目中的UIViewController繼承這個基類,那么在其他頁面中就可以使用這個積累中的方法。
以下是我的AFNetWorking二次封裝
- .h文件中
// 網(wǎng)絡(luò)請求類型
typedefNS_ENUM(NSUInteger,HttpRequestType) {
//get請求
HttpRequestTypeGet =0,
// post請求
HttpRequestTypePost
};
/**
*發(fā)送網(wǎng)絡(luò)請求
*
*@param url請求的網(wǎng)址字符串
*@param parameters請求的參數(shù)
*@param type請求的類型
*@param success請求成功的結(jié)果
*@param failure請求失敗的結(jié)果
*/
- (void)networkRequest:(NSString*)url andParameters:(NSDictionary*)parameters andRequestType:(HttpRequestType*)type success:(void(^)(id responseObject))success failure:(void(^)(NSError* error))failure;
/**
*上傳圖片
*
*@param URLString 上傳圖片的網(wǎng)址字符串
*@param parameters 上傳圖片的參數(shù)
*@param uploadParam 上傳圖片的信息
*@param success 上傳成功的回調(diào)
*@param failure 上傳失敗的回調(diào)
*/
- (void)uploadWithURLString:(NSString*)url parameters:(id)parameters uploadParam:(UploadParam *)uploadParam success:(void(^)())success failure:(void(^)(NSError*error))failure;
- .m文件中
//網(wǎng)絡(luò)請求
-(void)networkRequest:(NSString *)url andParameters:(NSDictionary *)parameters andRequestType:(HttpRequestType)type success:(void (^)(id responseObject))success failure:(void (^)(NSError * error))failure{
if (type == 0) {
[self.mgr GET:url 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);
}
}];
}
if (type == 1){
[self.mgr POST:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error%@",error);
if (failure) {
failure(error);
}
}];
}
}
-(void)uploadWithURLString:(NSString *)url parameters:(id)parameters uploadParam:(NSDictionary *)uploadParam success:(void (^)())success failure:(void (^)(NSError *))failure{
[self.mgr POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:(圖片的二進(jìn)制數(shù)據(jù)) name:(服務(wù)器對應(yīng)的參數(shù)名稱) fileName:(文件的名稱(上傳到服務(wù)器后,服務(wù)器保存的文件名)) mimeType:(文件的MIME類型(image/png,image/jpg等))];
} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
}