YRNetworkManager.m 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. //
  2. // YRNetworkManager.m
  3. // UU_Ent
  4. //
  5. // Created by liujl on 2019/6/4.
  6. // Copyright © 2019 UAS. All rights reserved.
  7. //
  8. #import "YRNetworkManager.h"
  9. @interface YRNetworkManager()
  10. @property(strong,nonatomic)AFHTTPSessionManager *manager;
  11. @end
  12. @implementation YRNetworkManager
  13. +(instancetype)shareManager{
  14. static YRNetworkManager *instance = nil;
  15. static dispatch_once_t onceToken;
  16. dispatch_once(&onceToken, ^{
  17. instance = [[YRNetworkManager alloc]init];
  18. });
  19. instance.manager = [AFHTTPSessionManager manager];
  20. instance.manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain",@"charset=UTF-8", nil];
  21. /*由于有三种接口:B2B,ERP,IM,所以这两句需要的在外面自定义*/
  22. // manager.requestSerializer = [AFJSONRequestSerializer serializer];
  23. // manager.responseSerializer = [AFJSONResponseSerializer serializer];
  24. [instance.manager.securityPolicy setAllowInvalidCertificates:YES];
  25. [instance.manager.requestSerializer setValue:@"application/x-www-form-urlencoded;charset=utf8" forHTTPHeaderField:@"Content-Type"];
  26. // [instance.manager.requestSerializer setValue:FORMAT(@"%@",g_sessionUser) forHTTPHeaderField:@"sessionUser"];
  27. [instance.manager.requestSerializer setValue:[NSString stringWithFormat:@"JSESSIONID=%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"sessionId"]] forHTTPHeaderField:@"Cookie"];
  28. [instance.manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
  29. instance.manager.requestSerializer.timeoutInterval = 15.0f;
  30. [instance.manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
  31. return instance;
  32. }
  33. +(instancetype)b2bShareManager{
  34. return [self new];
  35. }
  36. +(void)checkNetWork{
  37. AFNetworkReachabilityManager *manage = [AFNetworkReachabilityManager sharedManager];
  38. [manage setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
  39. if (status == AFNetworkReachabilityStatusNotReachable) {//没有网络的情况
  40. [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"netWorkStatus"];
  41. }else{
  42. [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"netWorkStatus"];
  43. }
  44. [[NSNotificationCenter defaultCenter] postNotificationName:kAFReachabilityChangedNotification object:nil userInfo:@{@"status":@(status)}];
  45. }];
  46. [manage startMonitoring];
  47. }
  48. /**
  49. 发起请求
  50. @param url url
  51. @param type 发起请求的方式
  52. @param parameters 参数
  53. @param uploadProgress 进度
  54. @param success 成功回调
  55. @param failure 失败回调
  56. */
  57. -(NSURLSessionDataTask *)request:(NSString *)url method:(requestType)type parameters:(id)parameters progress:(void(^)(NSProgress *uploadProgress))uploadProgress success:(void(^)(NSURLSessionDataTask *task,id responseObject))success failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure{
  58. if (type == POST) {
  59. return [self.manager POST:url parameters:parameters progress:uploadProgress success:success failure:failure];
  60. }else if(type == GET){
  61. return [self.manager GET:url parameters:parameters progress:uploadProgress success:success failure:failure];
  62. }else{
  63. NSAssert(type == GET || type == POST, @"请传入正确的网络请求方式");
  64. return [NSURLSessionDataTask new];
  65. }
  66. }
  67. /**
  68. 文件上传
  69. @param url url
  70. @param type 请求方式
  71. @param parameters 参数
  72. @param conBlock 上传文件的设置
  73. @param uploadProgress 上传进度
  74. @param success 成功
  75. @param failure 失败
  76. */
  77. -(NSURLSessionDataTask *)request:(NSString *)url method:(requestType)type parameters:(id)parameters constructingBodyWithBlock:(void(^)(id formData))conBlock progress:(void(^)(NSProgress *uploadProgress))uploadProgress success:(void(^)(NSURLSessionDataTask *task,id responseObject))success failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure{
  78. if (type == POST) {
  79. return [self.manager POST:url parameters:parameters constructingBodyWithBlock:conBlock progress:uploadProgress success:success failure:failure];
  80. }else{
  81. NSAssert(type == POST, @"请传入正确的网络请求方式");
  82. return [NSURLSessionDataTask new];
  83. }
  84. }
  85. /**
  86. 文件上传
  87. @param url 链接
  88. @param parameters 参数
  89. @param data 二进制数据
  90. @param dataKey 上传文件的key值
  91. @param fileName 上传成功后,需要保存到服务器的文件的名字
  92. @param uploadProgress 上传进度
  93. @param success 成功回调
  94. @param failure 失败回调
  95. */
  96. -(NSURLSessionDataTask *)upload:(NSString *)url parameters:(id)parameters data:(NSData *)data dataKey:(NSString *)dataKey fileName:(NSString *)fileName progress:(void(^)(NSProgress *uploadProgress))uploadProgress success:(void(^)(NSURLSessionDataTask *task,id responseObject))success failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure{
  97. return [self.manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  98. [formData appendPartWithFileData:data name:dataKey fileName:fileName mimeType:@"application/octet-stream"];
  99. } progress:uploadProgress success:success failure:failure];
  100. }
  101. @end