1 #import "HttpsManager.h"
2
3 @implementation HttpsManager
4 #pragma mark - 创建请求者
5 +(AFHTTPSessionManager *)manager
6 {
7 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
8 // 超时时间
9 manager.requestSerializer.timeoutInterval = kTimeOutInterval;
10
11 // 声明上传的是json格式的参数,需要你和后台约定好,不然会出现后台无法获取到你上传的参数问题
12 manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上传普通格式
13 // manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上传JSON格式
14
15 // 声明获取到的数据格式
16 manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不会解析,数据是data,需要自己解析
17 // manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN会JSON解析返回的数据
18 // 个人建议还是自己解析的比较好,有时接口返回的数据不合格会报3840错误,大致是AFN无法解析返回来的数据
19 return manager;
20 }
21
22 + (void)getUserCarShopAndSalesDataForSalesWithUserId:(NSString *)userId date:(NSString *)date selectAreaType:(NSString *)areaType Success:(SuccessBlock)success fail:(AFNErrorBlock)fail
23 {
24 // get请求也可以直接将参数放在字典里,AFN会自己讲参数拼接在url的后面,不需要自己凭借
25 NSDictionary *param = @{@"user_id":userId, @"sale_date":date, @"accessToken":@"e9c0e60318ebd07ec2fe", @"area_type":areaType};
26 // 创建请求类
27 AFHTTPSessionManager *manager = [self manager];
28 [manager GET:@"http://pm.yunhan-china.com/index.php/Api_sale/sales_get" parameters:param progress:^(NSProgress * _Nonnull downloadProgress) {
29 // 这里可以获取到目前数据请求的进度
30 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
31 // 请求成功
32 if(responseObject){
33 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
34 success(dict,YES);
35 } else {
36 success(@{@"msg":@"暂无数据"}, NO);
37 }
38 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
39 // 请求失败
40 fail(error);
41 }];
42 }
43
44 + (void)loginWithUserAccount:(NSString *)account password:(NSString *)password success:(SuccessBlock)success fail:(AFNErrorBlock)fail
45 {
46 // 将请求参数放在请求的字典里
47 NSDictionary *param = @{@"phoneNumber":account, @"password":@"f379eaf3c831b04de153469d1bec345e"};
48 // 创建请求类
49 AFHTTPSessionManager *manager = [self manager];
50 [manager POST:@"http://pm.yunhan-china.com/index.php/api_common/login"
51 parameters:param
52 progress:^(NSProgress * _Nonnull uploadProgress) {
53 // 这里可以获取到目前数据请求的进度
54 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
55 // 请求成功
56 if(responseObject){
57 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
58 success(dict,YES);
59 } else {
60 success(@{@"msg":@"暂无数据"}, NO);
61 }
62 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
63 // 请求失败
64 fail(error);
65 }];
66
67 }
68
69 - (void)downLoadWithUrlString:(NSString *)urlString
70 {
71 // 1.创建管理者对象
72 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
73 // 2.设置请求的URL地址
74 NSURL *url = [NSURL URLWithString:urlString];
75 // 3.创建请求对象
76 NSURLRequest *request = [NSURLRequest requestWithURL:url];
77 // 4.下载任务
78 NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
79 // 下载进度
80 NSLog(@"当前下载进度为:%lf", 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
81 } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
82 // 下载地址
83 NSLog(@"默认下载地址%@",targetPath);
84 // 设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象
85 NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
86 return [NSURL fileURLWithPath:filePath]; // 返回的是文件存放在本地沙盒的地址
87 } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
88 // 下载完成调用的方法
89 NSLog(@"%@---%@", response, filePath);
90 }];
91 // 5.启动下载任务
92 [task resume];
93 }
94
95 - (void)uploadWithUser:(NSString *)userId UrlString:(NSString *)urlString upImg:(UIImage *)upImg
96 {
97 // 创建管理者对象
98 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
99 // 参数
100 NSDictionary *param = @{@"user_id":userId};
101 [manager POST:urlString parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
102 /******** 1.上传已经获取到的img *******/
103 // 把图片转换成data
104 NSData *data = UIImagePNGRepresentation(upImg);
105 // 拼接数据到请求题中
106 [formData appendPartWithFileData:data name:@"file" fileName:@"123.png" mimeType:@"image/png"];
107 /******** 2.通过路径上传沙盒或系统相册里的图片 *****/
108 // [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"文件地址"] name:@"file" fileName:@"1234.png" mimeType:@"application/octet-stream" error:nil];
109
110 } progress:^(NSProgress * _Nonnull uploadProgress) {
111 // 打印上传进度
112 NSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
113 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
114 //请求成功
115 NSLog(@"请求成功:%@",responseObject);
116
117 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
118 //请求失败
119 NSLog(@"请求失败:%@",error);
120 }];
121 }
122
123 - (void)AFNetworkStatus{
124
125 //1.创建网络监测者
126 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
127
128 /*枚举里面四个状态 分别对应 未知 无网络 数据 WiFi
129 typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
130 AFNetworkReachabilityStatusUnknown = -1, 未知
131 AFNetworkReachabilityStatusNotReachable = 0, 无网络
132 AFNetworkReachabilityStatusReachableViaWWAN = 1, 蜂窝数据网络
133 AFNetworkReachabilityStatusReachableViaWiFi = 2, WiFi
134 };
135 */
136
137 [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
138 //这里是监测到网络改变的block 可以写成switch方便
139 //在里面可以随便写事件
140 switch (status) {
141 case AFNetworkReachabilityStatusUnknown:
142 NSLog(@"未知网络状态");
143 break;
144 case AFNetworkReachabilityStatusNotReachable:
145 NSLog(@"无网络");
146 break;
147
148 case AFNetworkReachabilityStatusReachableViaWWAN:
149 NSLog(@"蜂窝数据网");
150 break;
151
152 case AFNetworkReachabilityStatusReachableViaWiFi:
153 NSLog(@"WiFi网络");
154
155 break;
156
157 default:
158 break;
159 }
160
161 }] ;
162 }
163
164
165 @end