#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^AppToolBlock)(id result);
typedef void(^AppToolBlock)(id resultX);
typedef void(^errorblock)(id resultError);
@interface ServiceTools : NSObject
+ (NSString *)getUUID;
+ (void)geturlStr:(NSString *)urlStr Block:(AppToolBlock)block ErrorBlock:(errorblock)errorBlock;
// get请求使用
+ (void)geturlStr:(NSString *)urlStr Block:(AppToolBlock)block;
// post请求使用
+ (void)getPostWithURL:(NSString *)urlStr Body:(NSString *)body Block:(AppToolBlock)block;
+ (void)PostWithURL:(NSString *)urlStr NSDictionary:(NSDictionary *)dic Block:(AppToolBlock)block;
+ (void)methodUploadURL:(NSString *)urlStr
PicStr:(NSData *)Data
MimeType:(NSString *)mimeType
Id:(id)parameters
Block:(AppToolBlock)block;
@end
NS_ASSUME_NONNULL_END
#import "ServiceTools.h"
@implementation ServiceTools
+ (NSString *)getUUID {
// FB8A3FBB-4483-4ECA-AFAC-6FE33A716C41
// CFC7FF5D-5D24-49AB-85E1-11112D75743D
NSString * uuid = [[NSUUID UUID] UUIDString];
return uuid;
}
+ (void)geturlStr:(NSString *)urlStr Block:(AppToolBlock)block ErrorBlock:(errorblock)errorBlock{
// 编码
NSString *urlEncode = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html",nil];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.requestSerializer.timeoutInterval = 10.f; //
// 设置非校验证书模式
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager.securityPolicy setValidatesDomainName:NO];
[manager GET:urlEncode parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (responseObject) {
NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:NSJSONWritingPrettyPrinted error:nil];
NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
block(obj);
}else{
NSLog(@"网络请求数据为空Service.h");
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if ([error.domain isEqualToString:AFURLResponseSerializationErrorDomain]) {
// 服务器错误 server error
id response = [NSJSONSerialization
JSONObjectWithData:error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey]
options:0
error:nil];
errorBlock(response);
// response中包含服务端返回的内容
} else if ([error.domain isEqualToString:NSCocoaErrorDomain]) {
// 服务器引发异常 server throw exception
errorBlock(@"服务器引发异常");
} else if ([error.domain isEqualToString:NSURLErrorDomain]) {
// 网络错误 network error
errorBlock(@"网络错误");
}
}];
}
+ (void)geturlStr:(NSString *)urlStr Block:(AppToolBlock)block
{
// 编码
NSString *urlEncode = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html",nil];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.requestSerializer.timeoutInterval = 10.f; //
// 设置非校验证书模式
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager.securityPolicy setValidatesDomainName:NO];
[manager GET:urlEncode parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (responseObject) {
NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:NSJSONWritingPrettyPrinted error:nil];
NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
block(obj);
}else{
NSLog(@"网络请求数据为空Service.h");
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"网络请求失败:%@",error); //这里打印错误信息
}];
}
// post请求
+ (void)getPostWithURL:(NSString *)url Body:(NSString *)body Block:(AppToolBlock)block
{
// post地址
NSString *strEncode = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *urlStr = [NSURL URLWithString:strEncode];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlStr];
// 设置请求对象的请求方式为POST请求,默认是get请求
[request setHTTPMethod:@"POST"];
// 将body体转化成data型数据
NSData *bodyData = [body dataUsingEncoding:NSUTF8StringEncoding];
// 设置为请求的body体
[request setHTTPBody:bodyData];
// 创建一个专门配置session的类,是系统对session兑现的一个标准配置
NSURLSessionConfiguration *sessionConfigu = [NSURLSessionConfiguration defaultSessionConfiguration];
// 另一个初始化方法
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfigu];
NSURLSessionDataTask *postTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (data) {
id resultX = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
// 请求成功后执行
// responseObject返回数据位NSData
// [resultX writeToFile:filePath atomically:YES];
block(resultX);
}else{
// NSLog(@"失败==== %@",error);
// 请求失败执行从本地取出数据
// if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
// id result = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
// 通过block回调数据
block(error);
// }
}
}];
[postTask resume];
}
+ (void)methodUploadURL:(NSString *)urlStr
PicStr:(NSData *)Data
MimeType:(NSString *)mimeType
Id:(id)parameters
Block:(AppToolBlock)block{
//1。创建管理者对象
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html",nil];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置时间格式
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.png", str];
[manager POST:urlStr parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:Data name:@"image" fileName:fileName mimeType:mimeType];
} progress:^(NSProgress * _Nonnull uploadProgress) {
// NSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//请求成功
if(responseObject){
block(responseObject);
// NSLog(@"请求成功:%@",responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//请求失败
// NSLog(@"请求失败:%@",error);
}];
}
+ (void)PostWithURL:(NSString *)urlStr NSDictionary:(NSDictionary *)dic Block:(AppToolBlock)block{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html",nil];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.requestSerializer.timeoutInterval = 20.f; //
// [manager POST:urlStr parameters:dic progress:nil success:^(NSURLSessionTask *task, id responseObject) {
//
// if (responseObject) {
//
// NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:NSJSONWritingPrettyPrinted error:nil];
// NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
// block(obj);
// NSLog(@"请求成功:%@",obj);
//
// }else{
// NSLog(@"网络请求数据为空Service.h");
// }
// } failure:^(NSURLSessionTask *operation, NSError *error) {
// NSLog(@"Error: %@", error);
// }];
//AFN管理者调用get请求方法
[manager POST:urlStr parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
//返回请求返回进度
NSLog(@"downloadProgress-->%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//请求成功返回数据 根据responseSerializer 返回不同的数据格式
if (responseObject) {
NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:NSJSONWritingPrettyPrinted error:nil];
NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
block(obj);
NSLog(@"请求成功:%@",obj);
}
// NSLog(@"responseObject-->%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//请求失败
NSLog(@"error-->%@",error);
}];
}
@end
网友评论