httpHelper请求辅助类
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
@interface AFHttpClient : NSObject
DEFINE_SINGLETON_FOR_HEADER(AFHttpClient);
/**
* 判断网络是否正常
*
* @return Bool YES 表示正常
*/
- (BOOL)isOnline;
/**
* 停止请求
*/
- (void)cancelAllRequest;
/**
* Get 请求
*
* @param path 路径
* @param parameters 参数
* @param success success block
* @param failure failure block
*/
- (AFHTTPRequestOperation *)getHttpRequest:(NSString *)path
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
/**
* Get 请求
*
* @param url 路径
* @param parameter 参数
* @param completion completion block
*/
- (AFHTTPRequestOperation *)getHttpRequest:(NSString *)path
paramter:(NSDictionary *)parameters
completion:(void (^)(BOOL success))completion;
/**
* Post 请求
*
* @param path 路径
* @param parameters 参数
* @param success success block
* @param failure failure block
*/
- (AFHTTPRequestOperation*)postHttpRequest:(NSString *)path
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
/**
* Post 请求 发送json数据到服务端
*
* @param path 路径
* @param parameters 参数
* @param success success description
* @param postHttpRequest postHttpRequest description
* @param path path description
* @param parameters parameters description
* @param completion completion description
*/
- (AFHTTPRequestOperation*)postJsonHttpRequest:(NSString *)path
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
/**
* Post 请求
*
* @param url 路径
* @param parameter 参数
* @param completion completion block
*/
- (AFHTTPRequestOperation*)postHttpRequest:(NSString *)path
paramter:(NSDictionary *)parameters
completion:(void (^)(BOOL success))completion;
/**
* 上传图片
*
* @param uploadPath 上传路径
* @param imagePath 文件路径
* @param parameters 参数
* @param success success block
* @param failure failure block
*/
- (AFHTTPRequestOperation *)uploadImage:(NSString *)uploadPath
imagePath:(NSString *)imagePath
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
/**
* 上传图片
*
* @param url 上传路径
* @param path 文件本地路径
* @param name 文件名
* @param parameter 参数
* @param completion block
*/
- (AFHTTPRequestOperation *)uploadImage:(NSString *)url
path:(NSString *)path
name:(NSString *)name
paramter:(NSDictionary *)parameter
completion:(void (^)(BOOL success))completion;
/**
* 上传图片
*
* @param url 上传路径
* @param imageData 图像数据
* @param imageName 图像名称
* @param fileName 文件名
* @param parameter 参数
* @param success success block
* @param failure failure block
*/
- (AFHTTPRequestOperation *)uploadImage:(NSString *)url
imageData:(NSData *)imageData
imageName:(NSString *)imageName
fileName:(NSString*)fileName
paramter:(NSDictionary *)parameter
success:(void (^)(AFHTTPRequestOperation *operation,id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))failure;
/**
* 下载图片保存文件
*
* @param url 地址
* @param path 文件名
* @param block block
*/
- (AFHTTPRequestOperation *)downloadImage:(NSString*)url
saveToFile:(NSString *)path
completion:(void (^)(bool success))block;
@end
.m文件
#import "AFHttpClient.h"
#import "AFNetworking.h"
#import "YQZTools.h"
#import "YQZSetting.h"
#import "Reachability.h"
#import "YQZViewController.h"
@interface AFHttpClient()
@property (nonatomic, strong) AFHTTPRequestOperationManager *currentRequest;
@end
@implementation AFHttpClient
DEFINE_SINGLETON_FOR_CLASS(AFHttpClient);
- (AFHTTPRequestOperationManager *)currentRequest
{
if (!_currentRequest) {
self.currentRequest = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:[YQZTools getProxy]]];
}
return _currentRequest;
}
- (BOOL)isOnline
{
return [[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable;
}
#pragma mark - 请求 -
- (void)cancelAllRequest
{
[self.currentRequest.operationQueue cancelAllOperations];
}
- (AFHTTPRequestOperation *)getHttpRequest:(NSString *)path
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
if(NotReachable == [[Reachability reachabilityForInternetConnection] currentReachabilityStatus]){
if (![[YQZSetting sharedInstance] getAlertViewShow]) {
[YQZTools alert:@"提示" message:@"您的网络不给力哦"];
failure(nil,nil);
}
return nil;
}
[self showRequestLogWithUrl:path parameter:parameters];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
return [manager GET:path
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self showSuccessLog:responseObject];
int code = [[responseObject objectForKey:@"resultCode"] intValue];
if (code == 399) //系统错误
{
failure(operation, nil);
return;
}
if (success)
{
success(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self showErrorLog:error];
if (failure) {
failure(operation, error);
}
}];
}
- (AFHTTPRequestOperation *)getHttpRequest:(NSString *)path
paramter:(NSDictionary *)parameters
completion:(void (^)(BOOL success))completion
{
[self showRequestLogWithUrl:path parameter:parameters];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
return [manager GET:path
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self showSuccessLog:responseObject];
completion(YES);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self showErrorLog:error];
completion(NO);
}];
}
- (AFHTTPRequestOperation*)postHttpRequest:(NSString *)path
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
if(NotReachable == [[Reachability reachabilityForInternetConnection] currentReachabilityStatus]){
if (![[YQZSetting sharedInstance] getAlertViewShow]) {
[YQZTools alert:@"提示" message:@"您的网络不给力哦"];
if (failure) {
failure(nil,nil);
}
}
return nil;
}
[self showRequestLogWithUrl:path parameter:parameters];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
return [manager POST:path
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self showSuccessLog:responseObject];
int code = [[responseObject objectForKey:@"resultCode"] intValue];
if (code == 399) //系统错误
{
failure(operation, nil);
return;
}
if (success)
{
success(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self showErrorLog:error];
failure(operation, error);
}];
}
- (AFHTTPRequestOperation*)postJsonHttpRequest:(NSString *)path
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
if(NotReachable == [[Reachability reachabilityForInternetConnection] currentReachabilityStatus]){
if (![[YQZSetting sharedInstance] getAlertViewShow]) {
[YQZTools alert:@"提示" message:@"您的网络不给力哦"];
failure(nil,nil);
}
return nil;
}
[self showRequestLogWithUrl:path parameter:parameters];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//申明请求的数据是json类型
manager.requestSerializer=[AFJSONRequestSerializer serializer];
return [manager POST:path
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self showSuccessLog:responseObject];
int code = [[responseObject objectForKey:@"resultCode"] intValue];
if (code == 399) //系统错误
{
failure(operation, nil);
return;
}
if (success)
{
success(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self showErrorLog:error];
failure(operation, error);
}];
}
- (AFHTTPRequestOperation*)postHttpRequest:(NSString *)path
paramter:(NSDictionary *)parameters
completion:(void (^)(BOOL success))completion
{
[self showRequestLogWithUrl:path parameter:parameters];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
return [manager POST:path
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self showSuccessLog:responseObject];
NSLog(@"responseObject: %@", responseObject);
completion(YES);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self showErrorLog:error];
completion(NO);
}];
}
#pragma mark - 上传下载 -
- (AFHTTPRequestOperation *)uploadImage:(NSString *)uploadPath
imagePath:(NSString *)imagePath
parameter:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSURL *filePath = [NSURL fileURLWithPath:imagePath];
return [manager POST:uploadPath parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileURL:filePath name:@"image" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@", responseObject);
success(operation, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
failure(operation, error);
}];
}
- (AFHTTPRequestOperation *)uploadImage:(NSString *)url
path:(NSString *)path
name:(NSString *)name
paramter:(NSDictionary *)parameter
completion:(void (^)(BOOL success))completion
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
return [manager POST:url parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:name error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Upload Success: %@", responseObject);
completion(YES);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Upload Error: %@", error);
completion(NO);
}];
}
- (AFHTTPRequestOperation *)uploadImage:(NSString *)url
imageData:(NSData *)imageData
imageName:(NSString *)imageName
fileName:(NSString*)fileName
paramter:(NSDictionary *)parameter
success:(void (^)(AFHTTPRequestOperation *operation,id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))failure
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
return [manager POST:url parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData
name:imageName
fileName:fileName
mimeType:@"image/*"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self showSuccessLog:responseObject];
NSLog(@"Upload Success: %@", responseObject);
success(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Upload Error: %@", error);
failure(operation, error);
}];
}
- (AFHTTPRequestOperation *)downloadImage:(NSString*)url
saveToFile:(NSString *)path
completion:(void (^)(bool success))block
{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
block(YES);
NSLog(@"Successfully downloaded file to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
block(NO);
}];
[operation start];
return operation;
}
#pragma mark - 日志 -
- (void)showRequestLogWithUrl:(NSString *)path parameter:(NSDictionary *)parameters
{
NSLog(@"========请求路径==========================");
NSLog(@"Request URL: \n%@ \nParameter:\n%@", path, parameters);
}
- (void)showSuccessLog:(id)responseObject
{
NSLog(@"========✔️✔️✔️✔️========================");
NSLog(@"请求成功!返回结果:\n%@", responseObject);
NSLog(@"=========================================");
}
- (void)showErrorLog:(NSError *)error
{
NSLog(@"========❌❌❌❌========================");
NSLog(@"请求失败!错误描述:\n%@", error.localizedDescription);
NSLog(@"=========================================");
}
@end
最新文章
- Redis复制原理
- Java Web网站应用中的单点登录
- HTML笔记(三) 列表
- 【转】互联网全站HTTPS的时代已经到来
- 创建FILE GEODATABASE 和栅格目录及向栅格目录中添加影像
- alter和alert的一些问题
- 【HTML】Advanced3:Tables: Columns, Headers, and Footers
- poj 1321 棋盘问题【dfs】
- js arguments参数说明
- C#正则学习
- JDBC之事务隔离级别以及ACID特性
- oracle表空间表分区详解及oracle表分区查询使用方法(转+整理)
- (iOS)关于@property和@synthesize的理解(原创)
- js根据出生年月日换算年龄
- Spring mvc 原理浅析
- collections标准库
- CentOS7、REHL7的firewalld防火墙使用简单说明
- webstrom vue项目让局域网访问
- 【vim】跳转到上/下一个修改的位置
- JAVA编码 —— 字符串关键字内容替换
热门文章
- __setup宏简介
- vim编辑器最常用按键说明
- Javascript Tip(!!)
- array / matrix subarray/submatrix sum
- centos6.5安装gmime-2.6
- JAVA企业级开发-jdbc入门(09)
- .net实现IHttpModule接口顾虑器
- ue4 svn备份目录
- [UE4]C++实现动态加载的问题:LoadClass()和LoadObject()
- 洛谷P2292 [HNOI2004]L语言