網(wǎng)絡(luò)請(qǐng)求的時(shí)候最常用到的就是get,post和upload了。
@interface UploadParam : NSObject
/**
*? 圖片的二進(jìn)制數(shù)據(jù)
*/
@property (nonatomic, strong) NSData *data;
/**
*? 服務(wù)器對(duì)應(yīng)的參數(shù)名稱
*/
@property (nonatomic, copy) NSString *name;
/**
*? 文件的名稱(上傳到服務(wù)器后,服務(wù)器保存的文件名)
*/
@property (nonatomic, copy) NSString *filename;
/**
*? 文件的MIME類型(image/png,image/jpg等)
*/
@property (nonatomic, copy) NSString *mimeType;
@end
@class UploadParam;
/**
*? 網(wǎng)絡(luò)請(qǐng)求類型
*/
typedef NS_ENUM(NSUInteger,HttpRequestType) {
/**
*? get請(qǐng)求
*/
HttpRequestTypeGet = 0,
/**
*? post請(qǐng)求
*/
HttpRequestTypePost
};
@interface HttpRequest : NSObject
/**
*? 發(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:(void (^)(id responseObject))success
failure:(void (^)(NSError *error))failure;
/**
*? 發(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:(void (^)(id responseObject))success
failure:(void (^)(NSError *error))failure;
/**
*? 發(fā)送網(wǎng)絡(luò)請(qǐng)求
*
*? @param URLString? 請(qǐng)求的網(wǎng)址字符串
*? @param parameters? 請(qǐng)求的參數(shù)
*? @param type? ? ? ? 請(qǐng)求的類型
*? @param resultBlock 請(qǐng)求的結(jié)果
*/
+ (void)requestWithURLString:(NSString *)URLString
parameters:(id)parameters
type:(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 *)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請(qǐng)求 --
+ (void)getWithURLString:(NSString *)URLString? ? ? ? ? ? ? parameters:(id)parameters? ? ? ? ? ? ? ? success:(void (^)(id))success? ? ? ? ? ? ? ? failure:(void (^)(NSError *))failure?
{? ? ? ??
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];??
? /**? ? *? 可以接受的類型? ? */? ??
manager.responseSerializer = [AFHTTPResponseSerializer serializer];? ?
?/**? ? *? 請(qǐng)求隊(duì)列的最大并發(fā)數(shù)? ? *///? ? manager.operationQueue.maxConcurrentOperationCount = 5;??
? /**? ? *? 請(qǐng)求超時(shí)的時(shí)間? ? *///? ??
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請(qǐng)求 --
+ (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網(wǎng)絡(luò)請(qǐng)求 --+ (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);
}
}];
}