HttpClient.m 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. //
  2. // HttpClient.m
  3. // zhuxun
  4. //
  5. // Created by 张建伟 on 15/4/7.
  6. // Copyright (c) 2015年 张建伟. All rights reserved.
  7. //
  8. #import "HttpClient.h"
  9. #import "NSObject+Common.h"
  10. //导入安全相关库
  11. #import "MD5.h"
  12. #import "DES.h"
  13. #import "AFNetworkReachabilityManager.h"
  14. #import "Utils.h"
  15. #import "AFNetworking.h"
  16. @implementation HttpClient
  17. + (HttpClient *)sharedJsonClient {
  18. HttpClient *httpclient = [[HttpClient alloc]init];
  19. return httpclient;
  20. }
  21. - (void)requestJsonDataWithPath:(NSString *)aPath
  22. withParams:(id)params
  23. withMethodType:(int)NetworkMethod
  24. andBlock:(void (^)(id data, NSError *error))block{
  25. //log请求数据
  26. NSLog(@"Params: %@",params);
  27. #warning 安全改造--加密请求 完成前不要取消下面注释
  28. AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
  29. mgr.requestSerializer = [AFJSONRequestSerializer serializer];
  30. mgr.securityPolicy.allowInvalidCertificates = YES;
  31. mgr.requestSerializer.timeoutInterval = 10;
  32. mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript",@"text/plain", @"text/html",nil];
  33. [mgr.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  34. [mgr.requestSerializer setValue:[NSString stringWithFormat:@"Basic %@",[DES returnKeyValue]]forHTTPHeaderField:@"Authorization"];
  35. NSLog(@"aPath: - / - / - aPath: %@ aPath: - / - / -",aPath);
  36. //新增无网络不处理请求,直接return
  37. // [Utils netWorkType:^AFNetworkReachabilityStatus status) {
  38. //发起请求
  39. switch (NetworkMethod) {
  40. case Get:{
  41. [mgr GET:aPath parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {
  42. //
  43. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  44. //
  45. if ([task.originalRequest.URL.path isEqualToString:@"/v1/servers"]) {
  46. block(responseObject, nil);
  47. return ;
  48. }
  49. id error = [self handleResponse:responseObject];
  50. if (error) {
  51. block(nil, error);
  52. }else{
  53. block(responseObject, nil);
  54. }
  55. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  56. //
  57. block(nil, error);
  58. [self showError:error];
  59. }];
  60. // [self GET:aPath parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
  61. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, responseObject);
  62. // id error = [self handleResponse:responseObject];
  63. // if (error) {
  64. // block(nil, error);
  65. // }else{
  66. // block(responseObject, nil);
  67. // }
  68. // } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  69. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, error);
  70. // [self showError:error];
  71. // block(nil, error);
  72. // }];
  73. break;
  74. }
  75. case Post:{
  76. //通过服务器获取数据
  77. [mgr POST:aPath parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {
  78. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  79. id error = [self handleResponse:responseObject];
  80. if (error) {
  81. block(nil, error);
  82. }else{
  83. block(responseObject, nil);
  84. }
  85. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  86. [self showError:error];
  87. block(nil, error);
  88. }];
  89. // [self POST:aPath parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
  90. //
  91. //
  92. //
  93. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, responseObject);
  94. //
  95. //
  96. // NSLog(@"\n===========responseMessage===========\n%@",responseObject[@"message"]);
  97. //
  98. // id error = [self handleResponse:responseObject];
  99. // if (error) {
  100. //
  101. //
  102. // block(nil, error);
  103. // }else{
  104. // // if ([aPath isEqualToString:kNetPath_Code_Login]) {
  105. // // [CodingNetAPIClient saveCookieData];
  106. // // }
  107. // block(responseObject, nil);
  108. // }
  109. // } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  110. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, error);
  111. // [self showError:error];
  112. // block(nil, error);
  113. // }];
  114. break;
  115. }
  116. case Put:{
  117. [mgr PUT:aPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  118. id error = [self handleResponse:responseObject];
  119. if (error) {
  120. block(nil, error);
  121. }else{
  122. block(responseObject, nil);
  123. }
  124. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  125. [self showError:error];
  126. block(nil, error);
  127. }];
  128. // [self PUT:aPath parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
  129. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, responseObject);
  130. // id error = [self handleResponse:responseObject];
  131. // if (error) {
  132. // block(nil, error);
  133. // }else{
  134. // block(responseObject, nil);
  135. // }
  136. // } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  137. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, error);
  138. // [self showError:error];
  139. // block(nil, error);
  140. // }];
  141. break;
  142. }
  143. case Delete:{
  144. [mgr DELETE:aPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  145. id error = [self handleResponse:responseObject];
  146. if (error) {
  147. block(nil, error);
  148. }else{
  149. block(responseObject, nil);
  150. }
  151. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  152. [self showError:error];
  153. block(nil, error);
  154. }];
  155. // [self DELETE:aPath parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
  156. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, responseObject);
  157. // id error = [self handleResponse:responseObject];
  158. // if (error) {
  159. // block(nil, error);
  160. // }else{
  161. // block(responseObject, nil);
  162. // }
  163. // } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  164. // NSLog(@"\n===========response===========\n%@:\n%@", aPath, error);
  165. // [self showError:error];
  166. //
  167. // block(nil, error);
  168. // }];
  169. }
  170. default:
  171. break;
  172. }
  173. // } fail:^{
  174. // //
  175. //
  176. // return ;
  177. // }];
  178. // AFNetworkReachabilityStatus status = [userInfo[AFNetworkingReachabilityNotificationStatusItem] integerValue];
  179. // if (status == AFNetworkReachabilityStatusNotReachable) {//未连接
  180. // //这是在手机的顶部出现的提示
  181. // [weakself showStatusBarNetError:[NSError errorWithDomain:@"NETWOR" code:-1 userInfo:@{@"NSLocalizedDescription":@"您的手机目前没有连接网络,请进行网络确认"}]];
  182. // // [self socketDisConnect];
  183. // [weakself disConnect];
  184. // }else if(status==AFNetworkReachabilityStatusReachableViaWWAN||status==AFNetworkReachabilityStatusReachableViaWiFi)
  185. // {
  186. // //连接到主机
  187. // // [self connect:_ipAddress port:_port];
  188. // [weakself startConnect];
  189. // //状态栏显示连接状态
  190. // [weakself showStatusBarNetReconnected];
  191. //
  192. // }
  193. }
  194. - (void)cloudStorageRequestJsonDataWithPath:(NSString *)aPath
  195. withParams:(id)params
  196. withMethodType:(int)NetworkMethod
  197. andBlock:(void (^)(id data, NSError *error))block
  198. {
  199. //log请求数据
  200. NSLog(@"Params: %@",params);
  201. #warning 安全改造--加密请求 完成前不要取消下面注释
  202. AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
  203. mgr.requestSerializer = [AFJSONRequestSerializer serializer];
  204. mgr.securityPolicy.allowInvalidCertificates = YES;
  205. mgr.requestSerializer.timeoutInterval = 10;
  206. mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript",@"text/plain", @"text/html",nil];
  207. [mgr.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  208. NSString *auth = [userDefaults objectForKey:@"authorization"];
  209. if (auth) {
  210. //[DES cloudStorageReturnKeyValue]
  211. [mgr.requestSerializer setValue:[NSString stringWithFormat:@"Basic %@",auth]forHTTPHeaderField:@"Authorization"];
  212. // [mgr.requestSerializer setValue:[DES cloudStorageReturnKeyValue]forHTTPHeaderField:@"Authorization"];
  213. }
  214. NSLog(@"aPath: - / - / - aPath: %@ aPath: - / - / -",aPath);
  215. //新增无网络不处理请求,直接return
  216. // [Utils netWorkType:^AFNetworkReachabilityStatus status) {
  217. //发起请求
  218. switch (NetworkMethod) {
  219. case Get:{
  220. [mgr GET:aPath parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {
  221. //
  222. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  223. //
  224. if ([task.originalRequest.URL.path isEqualToString:@"/v1/servers"]) {
  225. block(responseObject, nil);
  226. return ;
  227. }
  228. id error = [self handleResponse:responseObject];
  229. if (error) {
  230. block(nil, error);
  231. }else{
  232. block(responseObject, nil);
  233. }
  234. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  235. //
  236. block(nil, error);
  237. [self showError:error];
  238. }];
  239. break;
  240. }
  241. case Post:{
  242. //通过服务器获取数据
  243. [mgr POST:aPath parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {
  244. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  245. id error = [self handleResponse:responseObject];
  246. if (error) {
  247. block(nil, error);
  248. }else{
  249. block(responseObject, nil);
  250. }
  251. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  252. [self showError:error];
  253. block(nil, error);
  254. }];
  255. break;
  256. }
  257. case Put:{
  258. [mgr PUT:aPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  259. id error = [self handleResponse:responseObject];
  260. if (error) {
  261. block(nil, error);
  262. }else{
  263. block(responseObject, nil);
  264. }
  265. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  266. [self showError:error];
  267. block(nil, error);
  268. }];
  269. break;
  270. }
  271. case Delete:{
  272. [mgr DELETE:aPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  273. id error = [self handleResponse:responseObject];
  274. if (error) {
  275. block(nil, error);
  276. }else{
  277. block(responseObject, nil);
  278. }
  279. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  280. [self showError:error];
  281. block(nil, error);
  282. }];
  283. }
  284. default:
  285. break;
  286. }
  287. }
  288. - (void)cloudStorageDownUpJsonDataWithPath:(NSString *)aPath
  289. withParams:(id)params
  290. withMethodType:(int)NetworkMethod
  291. andBlock:(void (^)(id data, NSError *error))block
  292. {
  293. //log请求数据
  294. NSLog(@"Params: %@",params);
  295. #warning 安全改造--加密请求 完成前不要取消下面注释
  296. AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
  297. mgr.requestSerializer = [AFJSONRequestSerializer serializer];
  298. mgr.securityPolicy.allowInvalidCertificates = YES;
  299. mgr.requestSerializer.timeoutInterval = 10;
  300. mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript",@"text/plain", @"text/html",nil];
  301. [mgr.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  302. // [mgr.requestSerializer setValue:[DES cloudStorageDownUpReturnKeyValue] forHTTPHeaderField:@"Authorization"];
  303. [mgr.requestSerializer setAuthorizationHeaderFieldWithUsername:@"4f860649600a47508379639dba82327d" password:@"f3b58f6b935b4acd9d9e795864ad10d4"];
  304. NSLog(@"aPath: - / - / - aPath: %@ aPath: - / - / -",aPath);
  305. //新增无网络不处理请求,直接return
  306. // [Utils netWorkType:^AFNetworkReachabilityStatus status) {
  307. //发起请求
  308. switch (NetworkMethod) {
  309. case Get:{
  310. [mgr GET:aPath parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {
  311. //
  312. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  313. //
  314. block(responseObject, nil);
  315. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  316. //
  317. block(nil, error);
  318. [self showError:error];
  319. }];
  320. break;
  321. }
  322. case Post:{
  323. //通过服务器获取数据
  324. [mgr POST:aPath parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {
  325. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  326. block(responseObject, nil);
  327. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  328. [self showError:error];
  329. block(nil, error);
  330. }];
  331. break;
  332. }
  333. case Put:{
  334. [mgr PUT:aPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  335. id error = [self handleResponse:responseObject];
  336. if (error) {
  337. block(nil, error);
  338. }else{
  339. block(responseObject, nil);
  340. }
  341. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  342. [self showError:error];
  343. block(nil, error);
  344. }];
  345. break;
  346. }
  347. case Delete:{
  348. [mgr DELETE:aPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  349. id error = [self handleResponse:responseObject];
  350. if (error) {
  351. block(nil, error);
  352. }else{
  353. block(responseObject, nil);
  354. }
  355. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  356. [self showError:error];
  357. block(nil, error);
  358. }];
  359. }
  360. default:
  361. break;
  362. }
  363. }
  364. //请求用户状态
  365. //-(void)postRequestToUrl:(NSString *)url netWorkMethod:(int)networkMethod aPath:(NSString *)path WithParams:(id)params complete:(void (^)(BOOL, NSDictionary *))complete{
  366. //
  367. // //拼接最全路径
  368. // NSString *aPath = [NSString stringWithFormat:@"%@%@",APP_HOST,path];
  369. //
  370. //
  371. //
  372. // if (networkMethod == Post) {
  373. //
  374. // NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:aPath]];
  375. //
  376. // //设计请求头
  377. // [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  378. // request.HTTPMethod = @"POST";
  379. //
  380. // NSData *data = [NSJSONSerialization dataWithJSONObject:params options:(NSJSONWritingPrettyPrinted) error:nil];
  381. // //设置发送请求参数
  382. // request.HTTPBody = data;
  383. //
  384. // //发送请求
  385. // [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
  386. // if (data!=nil) {
  387. // NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingAllowFragments) error:nil];
  388. //
  389. // if (complete && !connectionError) {
  390. // complete(true,dic);
  391. // }else{
  392. // complete?complete(true,dic):nil;
  393. // }
  394. // }else{
  395. // NSLog(@"请求错误!");
  396. // }
  397. //
  398. //
  399. // }];
  400. // }else{
  401. //
  402. // NSLog(@"Requested data method is wrong, 'networkMethod' except 'Post' no other way!! ");
  403. //
  404. // }
  405. //
  406. //
  407. //
  408. //
  409. //
  410. //
  411. //}
  412. @end