浅谈IOS中AFNetworking网络请求的get和post步骤

时间:2022-09-20 09:34:44

1.首先通过第三方:CocoaPods下载AFNetworking

1.1.先找到要查找的三方库:pod search + AFNetworking

1.2.出来一堆列表页面,选择三方库最新版本命令,例如: pod ‘MBProgressHUD','~>0.8'  (:q 返回)

1.3.创建工程,进入工程: cd + 工程路径

1.4.编辑工程的Podfile文件: vim Podfile

1.5.(platform :iOS, ‘8.0'
target “工程名” do
pod ‘AFNetworking', ‘~> 3.1.0'
end)新版本 (编辑键i)->(Esc键: 输入:wq返回)

1.6.6.保存Podfile的设置,然后进行更新下载三方库: pod update

2.进入工程进行相关操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// 网络请求的头文件
#import <AFNetworking.h>
@interface ViewController ()
 
{
  // 进行网络监测判断的bool值
  BOOL isOpen;
}
 
// 用于网络请求的Session对象
@property (nonatomic, strong) AFHTTPSessionManager *session;
 
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
  [super viewDidLoad];
  // 初始化Session对象
  self.session = [AFHTTPSessionManager manager];
  // 设置请求接口回来的时候支持什么类型的数据
  self.session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"application/x-json",@"text/html", nil];
}
 
#pragma mark - 网络监测按钮的响应方法
- (IBAction)NetworkmonitoringAction:(id)sender {
  
  if (!isOpen) {
    //打开网络监测
    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    
    isOpen = YES;
    
    
  } else {
    // 关闭网络监测
    [[AFNetworkReachabilityManager sharedManager] stopMonitoring];
    
    isOpen = NO;
    
  }
  
  // 接下来会判断当前是WiFi状态还是3g状态,网络不可用状态
  [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
      case AFNetworkReachabilityStatusUnknown:
        NSLog(@"当前网络处于未知状态");
        break;
      case AFNetworkReachabilityStatusNotReachable:
        NSLog(@"当前网络处于未链接状态");
        break;
      case AFNetworkReachabilityStatusReachableViaWWAN:
        NSLog(@"手机流量网络");
        break;
      case AFNetworkReachabilityStatusReachableViaWiFi:
        NSLog(@"wifi状态");
        break;
      default:
        break;
    }
  }];
  
}
 
#pragma mark - get请求
- (IBAction)getRequestAction:(id)sender {
  
  // 参数1: get请求的网址
  // 参数2: 拼接参数
  // 参数3: 当前的进度
  // 参数4: 请求成功
  // 参数5: 请求失败
  [self.session GET:@"http://api.yhouse.com/m/city/dynmiclist" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
    NSLog(@"下载的进度");
  } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    NSLog(@"请求成功:%@", responseObject);
  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"请求失败:%@", error);
  }];
  
  
}
 
#pragma mark - post请求
- (IBAction)postRequestAction:(id)sender {
  
  /*{
   do = "pri_memberlist";
   "member_id" = zpHr2dsRvQQxYJxo2;
   "workspace_id" = ILfYpE4Dhs2gWcuQx;
   }*/
  NSString *urlString = @"http://m.taskwedo.com/API/wedo1/wedo.php";
  
  NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  [dict setObject:@"pri_memberlist" forKey:@"do"];
  
  [dict setObject:@"zpHr2dsRvQQxYJxo2" forKey:@"member_id"];
  [dict setObject:@"ILfYpE4Dhs2gWcuQx" forKey:@"workspace_id"];
  // 参数1: url
  // 参数2: body体
  [self.session POST:urlString parameters:dict progress:^(NSProgress * _Nonnull uploadProgress) {
    NSLog(@"上传的进度");
  } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    NSLog(@"post请求成功%@", responseObject);
  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"post请求失败:%@", error);
  }];
}
 
#pragma mark - post2请求
- (IBAction)postTwoRequestAction:(id)sender {
  
  /*address = "";
      comment = "\U7c7b\U6a21\U5757\U8ba1\U5212\U7528\U5230\U7b2c\U4e09\U90e8\U5206\U4e2d\Uff0c\U5f85\U63d0\U95ee\U3001\U56de\U7b54\U79ef\U7d2f\U5230\U4e00\U5b9a\U6570\U91cf\U65f6\Uff0c\U4fbf\U4e8e\U5927\U5bb6\U7684\U95ee\U9898\U7684\U5feb\U901f\U67e5\U627e\Uff0c\U6240\U4ee5\U63d0\U95ee\U90e8\U5206\U6682\U65f6\U4e0d\U52a0\U5165\U8fd9\U4e2a";
      do = "add_comment";
      kind = task;
      "member_id" = zpHr2dsRvQQxYJxo2;
      other = "";
      "task_id" = 55a47e79ec25e3641;*/
  
  NSString *urlString = @"http://m.taskwedo.com/API/wedo1/wedo.php";
  
  NSString *commonContent = @"类模块计划用到第三部分中,待提问、回答积累到一定数量时,便于大家的问题的快速查找,所以提问部分暂时不加入这个";
  // 把汉字进行编码
  commonContent = [commonContent stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
  NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  [dict setValue:@"" forKey:@"address"];
  [dict setValue:commonContent forKey:@"comment"];
  [dict setValue:@"add_comment" forKey:@"do"];
  [dict setValue:@"task" forKey:@"kind"];
  [dict setValue:@"zpHr2dsRvQQxYJxo2" forKey:@"member_id"];
  [dict setValue:@"" forKey:@"other"];
  [dict setValue:@"55a47e79ec25e3641" forKey:@"task_id"];
  
  [self.session POST:urlString parameters:dict progress:^(NSProgress * _Nonnull uploadProgress) {
    NSLog(@"上传的进度");
  } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    NSLog(@"post请求成功:%@", responseObject);
  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"post请求失败:%@", error);
  }];
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/leikun1113/p/5535924.html