#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

httpHelper请求辅助类的更多相关文章

  1. .net Core 使用IHttpClientFactory请求

            导读:本文已添加在晨曦微服务之旅,现在自己在尝试微服务架构,一边学边做项目快速的进入状态.当然在学习的过程中会将自己学到的知识进行分享. 一.为什么不用HttpClient       ...

  2. Http请求封装基类HttpHelper.cs

    HttpHelper请求封装基类,支持get请求和POS请求http接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 using System; using System.Colle ...

  3. 微信公众号开发系列-Http请求封装基类

    HttpHelper请求封装基类,支持get请求和POS请求,方便微信开发接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 [csharp] view plaincopy using ...

  4. 微信公众号开发系列-Http请求包基类

    HttpHelper请求包基类,支持get请求和POS要求.以促进微通道交互界面的开发,为了准备的人机交互界面,背部. 1.HttpHelper帮助基类 [csharp] view plaincopy ...

  5. C#实现HTTP访问类HttpHelper

    在项目开发过程中,我们经常会访问第三方接口,如我们需要接入的第三方接口是Web API,这时候我们就需要使用HttpHelper调用远程接口了.示例中的HttpHelper类使用Log4Net记录了每 ...

  6. 用java实现新浪爬虫,代码完整剖析(仅针对当前SinaSignOn有效)

    先来看我们的web.xml文件,如下 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application ...

  7. .netcore 3.1 C# 微信小程序发送订阅消息

    一.appsettings.json定义小程序配置信息 "WX": { "AppId": "wx88822730803edd44", &qu ...

  8. 使用HttpWebrequest对网站进行模拟操作(附登陆百度demo)

    // a[href=#viewSource]"); //查看源代码标签 viewSourceArr.attr("title", "查看源代码"); v ...

  9. LindDotNetCore~Polly组件对微服务场景的价值

    回到目录 Polly是一个开源框架,在github上可以找到,被善友大哥收录,也是.App vNext的一员! App vNext:https://github.com/App-vNext GitHu ...

随机推荐

  1. JS---猜数字(0-100)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. VS2005打开VS2008项目的2种方法

    vs2008支持.net3.5,而vs2005支持.net2.0,所以使用vs2005打开vs2008的项目,要确定你的项目是.net2.0的. 下面介绍2种方法: 方法1:用记事本打开.sln文件, ...

  3. winform 控件合集2

    http://www.cnblogs.com/peterzb/archive/2009/06/18/1505424.html 包含自定义绘制的ListBox, 带拖动,图片显示, 内嵌其它控件, 打印 ...

  4. [hdu3853]LOOPS(概率dp)

    题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望. 解题关键:概率dp反向求期望 ...

  5. 《精通Spring4.X企业应用开发实战》读后感第四章(BeanFactory和ApllicationContext)

  6. day1 java基础回顾-Junit单元测试

    Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好是放到同一个包中(可以是不同的源文件 ...

  7. 微信小程序开发之tab导航栏

    实现功能: 点击不同的tab导航,筛选数据 UI:   js: data:{ navbar: ['半月维保', '季度维保', '半年维保',"年度维保"],    //count ...

  8. select2,利用ajax高效查询大数据列表(可搜索、可分页)

    二.导入css和js到网站上 1.使用CDN,节省自己网站的流量 ? 1 2 <link href="https://cdnjs.cloudflare.com/ajax/libs/se ...

  9. 第6章 图的学习总结(邻接矩阵&邻接表)

    我觉得图这一章的学习内容更有难度,其实图可以说是树结构更为普通的表现形式,它的每个元素都可以与多个元素之间相关联,所以结构比树更复杂,然而越复杂的数据结构在现实中用途就越大了,功能与用途密切联系,所以 ...

  10. MySQL查看版本号的五种方式介绍1111111

    MySQL查看版本号的五种方式介绍 1 命令行模式登录MySQL [root@localhost ~]# mysql -uroot -p Enter password: Welcome to the ...