#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;
+ (void)geturlStr:(NSString *)urlStr Block:(AppToolBlock)block;
+ (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 {
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]) {
id response = [NSJSONSerialization
JSONObjectWithData:error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey]
options:0
error:nil];
errorBlock(response);
} else if ([error.domain isEqualToString:NSCocoaErrorDomain]) {
errorBlock(@"服务器引发异常");
} else if ([error.domain isEqualToString:NSURLErrorDomain]) {
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);
}];
}
+ (void)getPostWithURL:(NSString *)url Body:(NSString *)body Block:(AppToolBlock)block
{
NSString *strEncode = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *urlStr = [NSURL URLWithString:strEncode];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlStr];
[request setHTTPMethod:@"POST"];
NSData *bodyData = [body dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:bodyData];
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];
block(resultX);
}else{
block(error);
}
}];
[postTask resume];
}
+ (void)methodUploadURL:(NSString *)urlStr
PicStr:(NSData *)Data
MimeType:(NSString *)mimeType
Id:(id)parameters
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];
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) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if(responseObject){
block(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull 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:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"downloadProgress-->%@",uploadProgress);
} 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);
NSLog(@"请求成功:%@",obj);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error-->%@",error);
}];
}
@end