博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 之AFN封装(四)常用
阅读量:4290 次
发布时间:2019-05-27

本文共 39641 字,大约阅读时间需要 132 分钟。

+++++++++++++++++AFN++HTTP常用设置+++++++++++++++++++++++++

http常用设置//-(AFHTTPSessionManager *)httpNormalConfig{//    //待超时时间//    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];//    config.timeoutIntervalForRequest =20.0;////    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config];//    manager.requestSerializer=[AFHTTPRequestSerializer serializer];//    manager.responseSerializer = [AFHTTPResponseSerializer serializer];//    manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略   AFSSLPinningModeCertificate(校验证书)//    manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书//    manager.securityPolicy.validatesDomainName = NO;//不验证证书的域名//    manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml", @"text/plain; charset=utf-8", nil];//    [manager.requestSerializer setValue:@"text/html;charset=utf-8"//                     forHTTPHeaderField:@"Content-Type"];  //请求的URL所用的编码类型;如果不设置,默认的是json,客户端发送的数据类型//    [manager.requestSerializer//     setValue:@"application/json" forHTTPHeaderField:@"Accept"];//客户端或浏览器可以接受的数据类型 [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"username" password:@"password"];//带用户验证//////    /*////     //下列请求头参数根据你自己的后台接口要求来设置//     [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];//     [manager.requestSerializer setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];//     [manager.requestSerializer setValue:@"keep-alive" forHTTPHeaderField:@"Connection"];//     [manager.requestSerializer setValue:@"zh-cn" forHTTPHeaderField:@"language"];//     //如果报接受类型不一致请替换一致text/html或别的//     manager.responseSerializer.acceptableContentTypes = nil;//     设置向请求内容的类型//     [manager.requestSerializer setValue:@"application/json;charset=utf-8"forHTTPHeaderField:@"Content-Type"];//这个和//     设置请求内容的长度//     [manager.requestSerializer setValue:[NSStringstringWithFormat:@"%ld", (unsignedlong)[jsonStr length]] forHTTPHeaderField:@"Content-Length"];//     设置请求的编码类型//     [manager.requestSerializer setValue:@"gzip"forHTTPHeaderField:@"Content-Encoding"];//     *///////    return manager;//}

一般请求封装:

HTTPmanager设置#import "AFHTTPSessionManager.h"NS_ASSUME_NONNULL_BEGIN@interface QMWNHttpM : AFHTTPSessionManager+(AFHTTPSessionManager *)sharehttpsessionmanager;@endNS_ASSUME_NONNULL_END#import "QMWNHttpM.h"@implementation QMWNHttpM+(AFHTTPSessionManager *)sharehttpsessionmanager{    static QMWNHttpM *httpsessionmanager=nil;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        httpsessionmanager=[[QMWNHttpM alloc]init];        httpsessionmanager.requestSerializer.timeoutInterval=20.0;        httpsessionmanager.requestSerializer=[AFHTTPRequestSerializer serializer];        httpsessionmanager.responseSerializer = [AFHTTPResponseSerializer serializer];        //    manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略   AFSSLPinningModeCertificate(校验证书)        httpsessionmanager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书        httpsessionmanager.securityPolicy.validatesDomainName = NO;//不验证证书的域名                httpsessionmanager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil];        [httpsessionmanager.requestSerializer setValue:@"application/json"                         forHTTPHeaderField:@"Content-Type"];//;charset=utf-8//        [httpsessionmanager.requestSerializer setValue:@"application/x-www-form-urlencoded"//                         forHTTPHeaderField:@"Content-Type"];        [httpsessionmanager.requestSerializer         setValue:@"application/json" forHTTPHeaderField:@"Accept"];//        [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"13913002628" password:@"111111a"];//        [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"15850692168" password:@"111111a"];        [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:[HximCommanManager sharedCommonManager].username password:[HximCommanManager sharedCommonManager].password];        SLog(@"shifoudengu-用户名-%@",[HximCommanManager sharedCommonManager].username);    });    return httpsessionmanager;}@end--------------#import 
NS_ASSUME_NONNULL_BEGINtypedef void(^ProgressBlock) (NSProgress* progress);typedef void(^SuccessBlock) (NSURLSessionDataTask *task, id responseObject);typedef void(^FailureBlock) (NSURLSessionDataTask *task, NSError *error);@interface QMWNHttpRequestManager : NSObject+(instancetype)sharedManager;//1.put 把请求的参数放到body中,自己用原生的封装-(void)putjsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//2.1.把请求的参数放到body中,自己用原生的封装-(void)getjsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//2.把请求的参数放到body中,自己用原生的封装-(void)jsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//3.put修改数据-(void)putnormaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//4.get请求数据-(void)normaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//5.post 请求数据-(void)lyRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//6.普通的原生请求-(void)nativeRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;@endNS_ASSUME_NONNULL_END#import "QMWNHttpRequestManager.h"#import "AFNetworking.h"#import "QMWNHttpM.h"@interface QMWNHttpRequestManager()@property(nonatomic,strong) NSURLSessionDownloadTask *downloadTask;@property(nonatomic,strong)AFURLSessionManager *manager;@property(nonatomic,strong)NSData *resumeData;@end@implementation QMWNHttpRequestManager+(instancetype)sharedManager{ static QMWNHttpRequestManager *httpRequestManager; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ httpRequestManager=[[QMWNHttpRequestManager alloc]init]; }); return httpRequestManager;}//http常用设置,-(AFHTTPSessionManager *)httpNormalConfig{ //待超时时间 NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; config.timeoutIntervalForRequest =20.0; AFHTTPSessionManager *httpsessionmanager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config]; httpsessionmanager.requestSerializer=[AFHTTPRequestSerializer serializer]; httpsessionmanager.responseSerializer = [AFHTTPResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) httpsessionmanager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 httpsessionmanager.securityPolicy.validatesDomainName = NO;//不验证证书的域名 httpsessionmanager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [httpsessionmanager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//;charset=utf-8// [httpsessionmanager.requestSerializer setValue:@"application/x-www-form-urlencoded"// forHTTPHeaderField:@"Content-Type"]; [httpsessionmanager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];// [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"13913002628" password:@"111111a"];// [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"15850692168" password:@"111111a"]; [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:[HximCommanManager sharedCommonManager].username password:[HximCommanManager sharedCommonManager].password]; SLog(@"shifoudengu-用户名-%@",[HximCommanManager sharedCommonManager].username); return httpsessionmanager;}//1.put 把请求的参数放到body中,自己用原生的封装-(void)putjsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager]; manager.requestSerializer=[AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 manager.securityPolicy.validatesDomainName =NO;//不验证证书的域名 manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"PUT" URLString:url parameters:nil error:nil];[request addValue:@"application/json"forHTTPHeaderField:@"Content-Type"]; NSData *body= [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];[request setHTTPBody:body]; NSLog(@"参数---%@",params); [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {// NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; SLog(@"responseobject---%@",responseObject); if(responseObject!=nil){ NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:0 error:NULL]; NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];// SLog(@"---%@",dict); if(dict){ if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],dict); } } }else { SLog(@"无数据"); if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],@{@"backdata":@"无数据"}); } } }]resume];}//2.1.把请求的参数放到body中,自己用原生的封装-(void)getjsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager]; manager.requestSerializer=[AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 manager.securityPolicy.validatesDomainName =NO;//不验证证书的域名 manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"GET" URLString:url parameters:nil error:nil];[request addValue:@"application/json"forHTTPHeaderField:@"Content-Type"]; NSData *body= [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];[request setHTTPBody:body]; NSLog(@"参数---%@",params); [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {// NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:0 error:NULL]; NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];// SLog(@"---%@",dict); if(dict){ if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],dict); } } }]resume];}//2.把请求的参数放到body中,自己用原生的封装-(void)jsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager]; manager.requestSerializer=[AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 manager.securityPolicy.validatesDomainName =NO;//不验证证书的域名 manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:url parameters:nil error:nil];[request addValue:@"application/json"forHTTPHeaderField:@"Content-Type"]; NSData *body= [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];[request setHTTPBody:body]; NSLog(@"参数---%@",params); [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {// NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:0 error:NULL]; NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];// SLog(@"---%@",dict); if(dict){ if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],dict); } } }]resume];}//3.put修改数据-(void)putnormaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager];// __weak typeof(manager) weak_manager = manager; NSLog(@"参数---%@",params); [manager PUT:url parameters:params headers:@{} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串 NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];// SLog(@"dict--%@",dict); if(dict){ if(successBlock){ successBlock(task,dict); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failureBlock(task,error); }]; }//4.get请求数据-(void)normaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{// AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager]; AFHTTPSessionManager *manager = [self httpNormalConfig];// __weak typeof(manager) weak_manager = manager; NSLog(@"参数---%@",params); [manager GET:url parameters:params headers:@{} progress:^(NSProgress * _Nonnull downloadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串 NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];// SLog(@"dict--%@",dict); if(dict){ if(successBlock){ successBlock(task,dict); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failureBlock(task,error); // [weak_manager invalidateSessionCancelingTasks:YES]; }]; }//5.post 请求数据-(void)lyRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager];// AFHTTPSessionManager *manager = [self httpNormalConfig];// __weak typeof(manager) weak_manager = manager;// NSLog(@"---manger--%@",manager); NSLog(@"参数---%@",params); [manager POST:url parameters:params headers:@{} progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串 NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];// SLog(@"数据--%@",str); if(dict){ if(successBlock){ successBlock(task,dict); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failureBlock(task,error); // [weak_manager invalidateSessionCancelingTasks:YES]; }]; }//6.普通的原生请求,AFN参数会有问题-(void)nativeRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ NSString *jsonstr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:params options:0 error:nil] encoding:NSUTF8StringEncoding]; AFURLSessionManager *manager=[[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSMutableURLRequest *request=[[AFJSONRequestSerializer serializer]requestWithMethod:@"POST" URLString:url parameters:nil error:nil]; request.timeoutInterval=20; [request setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Accept"]; //设置body [request setHTTPBody:[jsonstr dataUsingEncoding:NSUTF8StringEncoding]]; [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];SLog(@"数据--%@",str); }]resume]; }@end
#import 
NS_ASSUME_NONNULL_BEGINtypedef void(^ProgressBlock) (NSProgress* progress);typedef void(^SuccessBlock) (NSURLSessionDataTask *task, id responseObject);typedef void(^FailureBlock) (NSURLSessionDataTask *task, NSError *error);@interface QMWNHttpRequestManager : NSObject+(instancetype)sharedManager;//把请求的参数放到body中,自己用原生的封装-(void)jsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//3.put修改数据-(void)putnormaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//4.get请求数据-(void)normaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//5.post 请求数据-(void)lyRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;//6.普通的原生请求-(void)nativeRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock;@endNS_ASSUME_NONNULL_END#import "QMWNHttpRequestManager.h"#import "AFNetworking.h"#import "QMWNHttpM.h"@interface QMWNHttpRequestManager()@property(nonatomic,strong) NSURLSessionDownloadTask *downloadTask;@property(nonatomic,strong)AFURLSessionManager *manager;@property(nonatomic,strong)NSData *resumeData;@end@implementation QMWNHttpRequestManager+(instancetype)sharedManager{ static QMWNHttpRequestManager *httpRequestManager; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ httpRequestManager=[[QMWNHttpRequestManager alloc]init]; }); return httpRequestManager;}//http常用设置,-(AFHTTPSessionManager *)httpNormalConfig{ //待超时时间 NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; config.timeoutIntervalForRequest =20.0; AFHTTPSessionManager *httpsessionmanager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config]; httpsessionmanager.requestSerializer=[AFHTTPRequestSerializer serializer]; httpsessionmanager.responseSerializer = [AFHTTPResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) httpsessionmanager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 httpsessionmanager.securityPolicy.validatesDomainName = NO;//不验证证书的域名 httpsessionmanager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [httpsessionmanager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//;charset=utf-8// [httpsessionmanager.requestSerializer setValue:@"application/x-www-form-urlencoded"// forHTTPHeaderField:@"Content-Type"]; [httpsessionmanager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];// [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"13913002628" password:@"111111a"];// [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"15850692168" password:@"111111a"]; [httpsessionmanager.requestSerializer setAuthorizationHeaderFieldWithUsername:[HximCommanManager sharedCommonManager].username password:[HximCommanManager sharedCommonManager].password]; SLog(@"shifoudengu-用户名-%@",[HximCommanManager sharedCommonManager].username); return httpsessionmanager;}//1.put 把请求的参数放到body中,自己用原生的封装PUT-(void)putjsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager]; manager.requestSerializer=[AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 manager.securityPolicy.validatesDomainName =NO;//不验证证书的域名 manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"PUT" URLString:url parameters:nil error:nil];[request addValue:@"application/json"forHTTPHeaderField:@"Content-Type"]; NSData *body= [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];[request setHTTPBody:body]; NSLog(@"参数---%@",params); [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {// NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; SLog(@"responseobject---%@",responseObject); if(responseObject!=nil){ NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:0 error:NULL]; NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];// SLog(@"---%@",dict); if(dict){ if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],dict); } } }else { SLog(@"无数据"); if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],@{@"backdata":@"无数据"}); } } }]resume];}//2.1.把请求的参数放到body中,自己用原生的封装-(void)getjsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager]; manager.requestSerializer=[AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 manager.securityPolicy.validatesDomainName =NO;//不验证证书的域名 manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"GET" URLString:url parameters:nil error:nil];[request addValue:@"application/json"forHTTPHeaderField:@"Content-Type"]; NSData *body= [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];[request setHTTPBody:body]; NSLog(@"参数---%@",params); [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {// NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:0 error:NULL]; NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];// SLog(@"---%@",dict); if(dict){ if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],dict); } } }]resume];}//把请求的参数放到body中,自己用原生的封装-(void)jsonpostRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [self httpNormalConfig]; manager.requestSerializer=[AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; // manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];//安全策略 AFSSLPinningModeCertificate(校验证书) manager.securityPolicy.allowInvalidCertificates = YES;//客户端是否信任非法证书 manager.securityPolicy.validatesDomainName =NO;//不验证证书的域名 manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"text/css", @"text/plain;charset=utf-8", nil]; [manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:url parameters:nil error:nil];[request addValue:@"application/json"forHTTPHeaderField:@"Content-Type"]; NSData *body= [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];[request setHTTPBody:body]; [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {// NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSData *data = [NSJSONSerialization dataWithJSONObject:responseObject options:0 error:NULL]; NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; SLog(@"---%@",dict); if(dict){ if(successBlock){ successBlock([[NSURLSessionDataTask alloc]init],dict); } } }]resume];}//3.put修改数据-(void)putnormaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager];// __weak typeof(manager) weak_manager = manager; [manager PUT:url parameters:params headers:@{} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串 NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; SLog(@"dict--%@",dict); if(dict){ if(successBlock){ successBlock(task,dict); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failureBlock(task,error); }]; }//4.get请求数据-(void)normaldownloadWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager];// __weak typeof(manager) weak_manager = manager; [manager GET:url parameters:params headers:@{} progress:^(NSProgress * _Nonnull downloadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串 NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; SLog(@"dict--%@",dict); if(dict){ if(successBlock){ successBlock(task,dict); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failureBlock(task,error); // [weak_manager invalidateSessionCancelingTasks:YES]; }]; }//5.post 请求数据-(void)lyRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ AFHTTPSessionManager *manager = [QMWNHttpM sharehttpsessionmanager];// AFHTTPSessionManager *manager = [self httpNormalConfig];// __weak typeof(manager) weak_manager = manager;// NSLog(@"---manger--%@",manager); NSLog(@"参数---%@",params); [manager POST:url parameters:params headers:@{} progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串 NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; SLog(@"数据--%@",str); if(dict){ if(successBlock){ successBlock(task,dict); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failureBlock(task,error); // [weak_manager invalidateSessionCancelingTasks:YES]; }]; }//6.普通的原生请求,AFN参数会有问题-(void)nativeRequestWithUrl:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{ NSString *jsonstr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:params options:0 error:nil] encoding:NSUTF8StringEncoding]; AFURLSessionManager *manager=[[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSMutableURLRequest *request=[[AFJSONRequestSerializer serializer]requestWithMethod:@"POST" URLString:url parameters:nil error:nil]; request.timeoutInterval=20; [request setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Accept"]; //设置body [request setHTTPBody:[jsonstr dataUsingEncoding:NSUTF8StringEncoding]]; [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { NSString *str=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];//网页二进制数据转换成字符串NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];SLog(@"数据--%@",str); }]resume]; }@end

 

转载地址:http://qdmgi.baihongyu.com/

你可能感兴趣的文章
javascript设计模式-工厂模式(4)
查看>>
javascript设计模式-组合模式(6)
查看>>
javascript设计模式-门面模式(7)
查看>>
javascript设计模式-享元模式(10)
查看>>
javascript设计模式-代理模式(11)
查看>>
Executor相关源码分析
查看>>
react之setState解析
查看>>
elasticsearch7.3版本已经不需要额外安装中文分词插件了
查看>>
【重大好消息】elasticsearch 7.3版本已经可以免费使用x-pack就可以设置账号和密码了,让你的数据不再裸奔
查看>>
解决使用logstash中jdbc导入mysql中的数据到elasticsearch中tinyint类型被转成布尔型的问题的方法
查看>>
elasticsearch7.3版本环境搭建(一)elasticsearch安装和配置
查看>>
SEO基本功:站内优化的一些基本手段
查看>>
centos6系列和7系列如何对外开放80,3306端口号或者其他端口号
查看>>
为什么您宁愿吃生活的苦,也不愿吃学习的苦?为什么你不愿意去学习呢
查看>>
解决elasticsearch7.3版本安装过程中遇到的包括内存不够、线程不够等问题
查看>>
日常项目测试用例检查点(来自一线测试人员的吐血总结)
查看>>
网站建设之域名注册和域名备案
查看>>
解决bootstrap时间输入框总被浏览器记住的记录遮挡住的问题
查看>>
git将一个分支完全覆盖另外一个分支如:dev分支代码完全覆盖某一个开发分支
查看>>
elasticsearch7.3版本环境搭建(二)可视化管理后台kibana的安装和配置
查看>>