APN的POST和GET请求工具的封装
为了降低自己项目和APN的耦合度,可以封装个自己的工具包,面向自己的工具开发,这里学习了下关于POST和GET的设计方式:
/**
* 发送一个POST请求
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功后的回调
* @param failure 请求失败后的回调
*/
+ (void)postWithURL:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.创建请求管理对象
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManagermanager];
// 2.发送请求
[mgr POST:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}
/**
* 发送一个POST请求(上传文件数据)
* @param url 请求路径
* @param params 请求参数
* @param formData 文件参数
* @param success 请求成功后的回调
* @param failure 请求失败后的回调
*/
+ (void)postWithURL:(NSString *)url params:(NSDictionary *)params formDataArray:(NSArray *)formDataArray success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.创建请求管理对象
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManagermanager];
// 2.发送请求
[mgr POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> totalFormData) {
for (IWFormData *formData in formDataArray) {
[totalFormData appendPartWithFileData:formData.data name:formData.name fileName:formData.filename mimeType:formData.mimeType];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}
/**
* 发送一个GET请求
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功后的回调
* @param failure 请求失败后的回调
*/
+ (void)getWithURL:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.创建请求管理对象
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManagermanager];
// 2.发送请求
[mgr GET:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}