Files
mier_ios/SweetParty/Expand/NetWork/MLNetWorkHelper.h

286 lines
12 KiB
C
Raw Normal View History

2025-08-11 10:43:19 +08:00
//
// MLNetWorkHelper.h
// HuiBao
//
// Created by 玛丽 on 2017/11/22.
// Copyright © 2017年 玛丽. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MLNetworkCache.h"
typedef NS_ENUM(NSUInteger, MLNetworkStatusType) {
/// 未知网络
MLNetworkStatusUnknown,
/// 无网络
MLNetworkStatusNotReachable,
/// 手机网络
MLNetworkStatusReachableViaWWAN,
/// WIFI网络
MLNetworkStatusReachableViaWiFi
};
typedef NS_ENUM(NSUInteger, MLRequestSerializer) {
/// 设置请求数据为JSON格式
MLRequestSerializerJSON,
/// 设置请求数据为二进制格式
MLRequestSerializerHTTP,
};
typedef NS_ENUM(NSUInteger, MLResponseSerializer) {
/// 设置响应数据为JSON格式
MLResponseSerializerJSON,
/// 设置响应数据为二进制格式
MLResponseSerializerHTTP,
};
/// 请求成功的Block
typedef void(^MLHttpRequestSuccess)(id responseObject);
/// 请求失败的Block
typedef void(^MLHttpRequestFailed)(NSError *error);
/// 缓存的Block
typedef void(^MLHttpRequestCache)(id responseCache);
/// 上传或者下载的进度, Progress.completedUnitCount:当前大小 - Progress.totalUnitCount:总大小
typedef void (^MLHttpProgress)(NSProgress *progress);
/// 网络状态的Block
typedef void(^MLNetworkStatus)(MLNetworkStatusType status);
@class AFHTTPSessionManager;
@interface MLNetWorkHelper : NSObject
/// 有网YES, 无网:NO
+ (BOOL)isNetwork;
/// 手机网络:YES, 反之:NO
+ (BOOL)isWWANNetwork;
/// WiFi网络:YES, 反之:NO
+ (BOOL)isWiFiNetwork;
/// 取消所有HTTP请求
+ (void)cancelAllRequest;
/// 实时获取网络状态,通过Block回调实时获取(此方法可多次调用)
+ (void)networkStatusWithBlock:(MLNetworkStatus)networkStatus;
/// 取消指定URL的HTTP请求
+ (void)cancelRequestWithURL:(NSString *)URL;
/// 开启日志打印 (Debug级别)
+ (void)openLog;
/// 关闭日志打印,默认关闭
+ (void)closeLog;
/**
* GET请求,
*
* @param URL
* @param parameters
* @param success
* @param failure
*
* @return ,cancel方法
*/
+ (__kindof NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* GET请求,
*
* @param URL
* @param parameters
* @param responseCache
* @param success
* @param failure
*
* @return ,cancel方法
*/
+ (__kindof NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
responseCache:(MLHttpRequestCache)responseCache
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* POST请求,
* @return ,cancel方法
*/
+ (__kindof NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* POST请求,
* @return ,cancel方法
*/
+ (__kindof NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
responseCache:(MLHttpRequestCache)responseCache
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
*
* @return ,cancel方法
*/
+ (__kindof NSURLSessionTask *)uploadFileWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
filePath:(NSString *)filePath
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
#pragma mark - 上传GIF
+ (NSURLSessionTask *)uploadGIFWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
gifData:(NSData *)gifData
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* /
*
* @param URL
* @param parameters
* @param name
* @param images
* @param fileNames , nil, "yyyyMMddHHmmss"
* @param imageScale (0.f ~ 1.f)
* @param imageType ,:pngjpg()....
* @param progress
* @param success
* @param failure
*
* @return ,cancel方法
*/
+ (__kindof NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* /
*
* @param URL
* @param parameters
* @param name
* @param images
* @param fileNames , nil, "yyyyMMddHHmmss"
* @param imageScale (0.f ~ 1.f)
* @param imageType ,:pngjpg()....
* @param audiofilePath
* @param progress
* @param success
* @param failure
*
* @return ,cancel方法
*/
+ (NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
audio:(NSString *)audiofilePath
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
*
*
* @param URL
* @param fileDir (Download)
* @param progress
* @param success (filePath:)
* @param failure
*
* @return NSURLSessionDownloadTask实例suspend方法resume方法
*/
+ (__kindof NSURLSessionTask *)downloadWithURL:(NSString *)URL
fileDir:(NSString *)fileDir
progress:(MLHttpProgress)progress
success:(void(^)(NSString *filePath))success
failure:(MLHttpRequestFailed)failure;
/*
************************************** **********************************************
*
* ,,GET,POST,,,.
*
* ,APP与后台服务器的数据交互都有不同的请求格式,,
* ,CocoaPods后,使pod update最新MLNetworkHelper,
* .
*
* ,, 2~3 ,2
* ,URL与参数的入口就行,3API的封装,
* .URL,
* ,
*
* ,,CocoaPods方式使用MLNetworkHelper,
* ,,URL,便
*
************************************** **********************************************
*/
#pragma mark - 设置AFHTTPSessionManager相关属性
#pragma mark 注意: 因为全局只有一个AFHTTPSessionManager实例,所以以下设置方式全局生效
/**
,,AFHTTPSessionManager实例进行自定义设置
(: AFNetworking.h头文件,AFHTTPSessionManager的)
@param sessionManager AFHTTPSessionManager的实例
*/
+ (void)setAFHTTPSessionManagerProperty:(void(^)(AFHTTPSessionManager *sessionManager))sessionManager;
/**
* :
*
* @param requestSerializer MLRequestSerializerJSON(JSON格式),MLRequestSerializerHTTP(),
*/
+ (void)setRequestSerializer:(MLRequestSerializer)requestSerializer;
/**
* :JSON格式
*
* @param responseSerializer MLResponseSerializerJSON(JSON格式),MLResponseSerializerHTTP()
*/
+ (void)setResponseSerializer:(MLResponseSerializer)responseSerializer;
/**
* :30S
*
* @param time
*/
+ (void)setRequestTimeoutInterval:(NSTimeInterval)time;
/// 设置请求头
+ (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
/**
* :
*
* @param open YES(), NO()
*/
+ (void)openNetworkActivityIndicator:(BOOL)open;
/**
Https请求, : http://blog.csdn.net/syg90178aw/article/details/52839103
@param cerPath Https证书的路径
@param validatesDomainName YES. NO; 使
, .validatesDomainName=NO, :,
SSL证书上的域名是独立的,www.google.com, mail.google.com是无法验证通过的.
*/
+ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName;
@end