cdts/xdts-ios 3/TreeHole/CYHResetCode/CYH/NetworkingTool/NetworkingTool.m

260 lines
12 KiB
Mathematica
Raw Normal View History

2023-07-27 09:20:00 +08:00
//
// NetworkingTool.m
// yunbaolive
//
// Created by on 2020/6/11.
// Copyright © 2020 cat. All rights reserved.
// https://blog.csdn.net/chase20150628/article/details/91575154
#import "NetworkingTool.h"
@implementation NetworkingTool
#pragma mark - POST
+ (nullable NSURLSessionDataTask *)BasePOST_Host:(NSString *)host hostPath:(NSString *)hostPath parameters:(nullable id)paramDic headers:(nullable NSDictionary <NSString *, NSString *> *)headerDic progress:(nullable void (^)(NSProgress *progress))progressBlock success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock {
NSString *url = [host stringByAppendingFormat:@"/%@", hostPath];
return [self BasePOST:url parameters:paramDic headers:headerDic progress:progressBlock success:successBlock failure:failureBlock];
}
/// POST( "POST " "NSURLSessionDataTask")
/// @param URLString URLString
/// @param paramDic
/// @param headerDic
/// @param progressBlock
/// @param successBlock
/// @param failureBlock
+ (nullable NSURLSessionDataTask *)BasePOST:(NSString *)URLString parameters:(nullable id)paramDic headers:(nullable NSDictionary <NSString *, NSString *> *)headerDic progress:(nullable void (^)(NSProgress *progress))progressBlock success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
return [sessionManager POST:URLString parameters:paramDic headers:headerDic progress:progressBlock success:successBlock failure:failureBlock];
}
#pragma mark - GET
+ (nullable NSURLSessionDataTask *)BaseGet_Host:(NSString *)host hostPath:(NSString *)hostPath parameters:(NSDictionary *)paramDic headers:(nullable NSDictionary<NSString *,NSString *> *)headerDic progress:(nullable void (^)(NSProgress *progress))progressBlock success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock {
NSString *url = [host stringByAppendingFormat:@"/%@", hostPath];
return [self BaseGet:url parameters:paramDic headers:headerDic progress:progressBlock success:successBlock failure:failureBlock];
}
/// GET
/// @param URLString URLString
/// @param paramDic
/// @param headerDic
/// @param downloadProgress
/// @param successBlock
/// @param failureBlock
+ (nullable NSURLSessionDataTask *)BaseGet:(NSString *)URLString parameters:(NSDictionary *)paramDic headers:(nullable NSDictionary<NSString *,NSString *> *)headerDic progress:(nullable void (^)(NSProgress *progress))progressBlock success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
return [sessionManager GET:URLString parameters:paramDic headers:headerDic progress:progressBlock success:successBlock failure:failureBlock];
}
#pragma mark -
+ (nullable NSURLSessionDownloadTask *)downloadFileWithURL:(NSString *)urlString saveFilePath:(NSString *)savePath progress:(void (^)(NSProgress *downloadProgress))downloadProgressBlock completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
NSURLRequest *requset = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
//
NSURLSessionDownloadTask *downTask = [sessionManager downloadTaskWithRequest:requset progress:^(NSProgress * _Nonnull downloadProgress) {
// completedUnitCount
// totalUnitCount
NSLog(@"%lld----%lld",downloadProgress.completedUnitCount,downloadProgress.totalUnitCount);
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSString *fullPath =[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject stringByAppendingString:response.suggestedFilename];
NSLog(@"targetPath-%@---fullPath:-%@",targetPath,fullPath);
//block
// return [NSURL fileURLWithPath:fullPath];
return [NSURL fileURLWithPath:savePath];
} completionHandler:completionHandler];
//--
[downTask resume];
return downTask;
}
#pragma mark -
/// upload
/// @param filePath
/// @param data
/// @param uploadProgress
/// @param completionHandler
+ (nullable NSURLSessionUploadTask *)upload:(NSString *)filePath fileData:(NSData *)data progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
NSURLRequest *requset = [NSURLRequest requestWithURL:[NSURL URLWithString:filePath]];
NSURLSessionUploadTask *uploadTask = [sessionManager uploadTaskWithRequest:requset fromData:data progress:uploadProgress completionHandler:completionHandler];
/*
NSURLRequest *requset = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost"]];
UIImage *image = [UIImage imageNamed:@"pic.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image, 0.8);
NSURLSessionUploadTask *uploadTask = [self.session uploadTaskWithRequest:requset fromData:imageData progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"%lld",uploadProgress.completedUnitCount);
} completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
NSLog(@"error:%@",error.description);
NSLog(@"%@",responseObject);
}];
*/
[uploadTask resume];
return uploadTask;
}
/// - POST - Form( "POST " "NSURLSessionDataTask")
/// @param URLString URLString
/// @param paramDic
/// @param headerDic
/// @param block HTTP bodyblock`AFMultipartFormData`
/// @param uploadProgress
/// @param successBlock ---> id
/// @param failureBlock
+ (nullable NSURLSessionDataTask *)upload_BasePOST:(NSString *)URLString parameters:(nullable id)paramDic headers:(nullable NSDictionary <NSString *, NSString *> *)headerDic constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
return [sessionManager POST:URLString parameters:paramDic headers:headerDic constructingBodyWithBlock:block progress:uploadProgress success:successBlock failure:failureBlock];
/** constructingBodyWithBlock:
//
1
UIImage *image = [UIImage imageNamed:@"pic.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image, 0.7);
//
[formData appendPartWithFormData:imageData name:@"file"];
2
FileData
name
fileName
mimeType
[formData appendPartWithFileData:imageData name:@"file" fileName:@"100.jpg" mimeType:@"image/jpg"];
// 3
NSURL *url = [NSURL fileURLWithPath:@"路径"];
[formData appendPartWithFileURL:url name:@"file" error:nil];
*/
}
#pragma mark -
/// , !
+ (void)setNetStatusObserver {
AFNetworkReachabilityManager *netManager = [AFNetworkReachabilityManager sharedManager];
/**
AFNetworkReachabilityStatusUnknown = -1,
AFNetworkReachabilityStatusNotReachable = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2,
*/
[netManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status){
switch (status) {
case AFNetworkReachabilityStatusUnknown:
//
[[NSNotificationCenter defaultCenter] postNotificationName:NetworkStatusChangKey_Unknown object:nil];
break;
case AFNetworkReachabilityStatusNotReachable:
//
[[NSNotificationCenter defaultCenter] postNotificationName:NetworkStatusChangKey_NotReachable object:nil];
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
//
[[NSNotificationCenter defaultCenter] postNotificationName:NetworkStatusChangKey_ReachableViaWWAN object:nil];
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
//WiFi
[[NSNotificationCenter defaultCenter] postNotificationName:NetworkStatusChangKey_ReachableViaWiFi object:nil];
break;
}
}];
[netManager startMonitoring]; //
}
#pragma mark - Set_Serializer
///-
+ (void)setRequestSerializer:(CYHRequestSerializer)requestSerializer {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
sessionManager.requestSerializer = requestSerializer == CYHRequestSerializerHTTP ? [AFHTTPRequestSerializer serializer] : [AFJSONRequestSerializer serializer];
}
/// -
+ (void)setResponseSerializer:(CYHResponseSerializer)responseSerializer {
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
sessionManager.responseSerializer = responseSerializer == CYHResponseSerializerHTTP ? [AFHTTPResponseSerializer serializer] : [AFJSONResponseSerializer serializer];
}
#pragma mark - Set_Timeout
+ (void)setRequestTimeout:(NSTimeInterval)interval {
[AFHTTPSessionManager manager].requestSerializer.timeoutInterval = interval;
}
#pragma mark - Set_SecurityPolicy
+ (void)setSecurityPolicy:(AFSecurityPolicy *)securityPolicy {
[AFHTTPSessionManager manager].securityPolicy = securityPolicy;
}
#pragma mark -
+ (AFHTTPSessionManager *)sessionManager {
return [AFHTTPSessionManager manager];
}
/*
+ (instancetype)shared
{
return [[self alloc] init];
}
// 访
static NetworkingTool *_instance;
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (_instance == nil) {
_instance = [super allocWithZone:zone];
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
// session.requestSerializer = [AFJSONRequestSerializer serializer];
_instance->_session = session;
}
});
return _instance;
}
// copyWithZone mutableCopyWithZone
-(id)copyWithZone:(NSZone *)zone
{
return _instance;
}
-(id)mutableCopyWithZone:(NSZone *)zone
{
return _instance;
}
*/
@end