| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- //
- // RequestManager.m
- // AJPushDemo
- //
- // Created by kean_qi on 2021/3/17.
- //
- #import "RequestManager.h"
- @implementation RequestManager
- + (instancetype)sharedInstance {
- static id _instance;
-
- static dispatch_once_t onceToken;
-
- dispatch_once(&onceToken, ^{
- _instance = [[self alloc] init];
- });
- return _instance;
- }
- - (void)GETRequestWithUrl:(NSString *)urlString paramaters:(NSMutableDictionary *)paramaters successBlock:(SuccessBlock)success FailBlock:(failBlock)fail{
- NSMutableString *strM = [[NSMutableString alloc] init];
- [paramaters enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- // 服务器接收参数的 key 值.
- NSString *paramaterKey = key;
- // 参数内容
- NSString *paramaterValue = obj;
- // appendFormat :可变字符串直接拼接的方法!
- [strM appendFormat:@"%@=%@&",paramaterKey,paramaterValue];
- }];
-
- urlString = [NSString stringWithFormat:@"%@?%@",urlString,strM];
- // 截取字符串的方法!
- urlString = [urlString substringToIndex:urlString.length - 1];
- NSLog(@"urlString:%@",urlString);
- NSURL *url = [NSURL URLWithString:urlString];
- NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15];
- // 2. 发送网络请求.
- // completionHandler: 说明网络请求完成!
- [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
- NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
- // 网络请求成功:
- if (data && !error) {
- // 查看 data 是否是 JSON 数据.
- // JSON 解析.
- id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
- // 如果 obj 能够解析,说明就是 JSON
- if (!obj) {
- obj = data;
- }
- // 成功回调
- dispatch_async(dispatch_get_main_queue(), ^{
- if (success) {
- success(obj,response);
- }
- });
- } else {
- // 失败回调
- if (fail) {
- fail(error);
- }
- }
- }] resume];
- }
- //POST请求方法
- - (void)POSTRequestWithUrl:(NSString *)urlString paramaters:(NSMutableDictionary *)paramaters successBlock:(SuccessBlock)success FailBlock:(failBlock)fail {
- // NSMutableString *strM = [[NSMutableString alloc] init];
- // [paramaters enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- // // 服务器接收参数的 key 值.
- // NSString *paramaterKey = key;
- // // 参数内容
- // NSString *paramaterValue = obj;
- // // appendFormat :可变字符串直接拼接的方法!
- // [strM appendFormat:@"%@=%@&",paramaterKey,paramaterValue];
- //
- // }];
- // NSString *body = [strM substringToIndex:strM.length - 1];
- // NSData *bodyData = [body dataUsingEncoding:NSUTF8StringEncoding];
- NSLog(@"%@",urlString);
- NSLog(@"%@",paramaters);
- NSURL *url = [NSURL URLWithString:urlString];
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15];
- // 1.设置请求方法:
- request.HTTPMethod = @"POST";
- [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
- [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-
- // 2.设置请求体
- // request.HTTPBody = bodyData;
- request.HTTPBody = [NSJSONSerialization dataWithJSONObject:paramaters options:NSJSONWritingPrettyPrinted error:nil];
- // 2. 发送网络请求.
- // completionHandler: 说明网络请求完成!
- [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
- // 网络请求成功:
- if (data && !error) {
- // 查看 data 是否是 JSON 数据.
- // JSON 解析.
- id obj = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:NULL];
- NSLog(@"%@",obj);
- // 如果 obj 能够解析,说明就是 JSON
- if (!obj) {
- obj = data;
- }
- // 成功回调
- dispatch_async(dispatch_get_main_queue(), ^{
- if (success) {
- success(obj,response);
- }
- });
- } else {
- // 失败回调
- if (fail) {
- fail(error);
- }
- }
- }] resume];
-
- }
- @end
|