網絡請求的時候最常用到的就是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);
}
}];
}