AFNetworking3.0使用简介

注意到咱们集成的版本为3.0.4。

下面的类已从AFNetworking 3.0中废弃:

  • AFURLConnectionOperation
  • AFHTTPRequestOperation
  • AFHTTPRequestOperationManager

以及很多修改,有兴趣的可以了解一下。

下面开始实践一下:

  1. // 请求的参数
  2. NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"20131129", @"date", @"1", @"startRecord", @"5", @"len", @"1234567890", @"udid", @"Iphone", @"terminalType", @"213", @"cid", nil];
  3. // 初始化Manager
  4. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  5. // 不加上这句话,会报“Request failed: unacceptable content-type: text/plain”错误,因为我们要获取text/plain类型数据
  6. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  7. // post请求
  8. [manager POST:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?" parameters:dic constructingBodyWithBlock:^(id _Nonnull formData) {
  9. // 拼接data到请求体,这个block的参数是遵守AFMultipartFormData协议的。
  10. } progress:^(NSProgress * _Nonnull uploadProgress) {
  11. // 这里可以获取到目前的数据请求的进度
  12. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  13. // 请求成功,解析数据
  14. NSLog(@"%@", responseObject);
  15. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
  16. NSLog(@"%@", dic);
  17. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  18. // 请求失败
  19. NSLog(@"%@", [error localizedDescription]);
  20. }];

如果是Get请求,相比Post请求,少了请求参数,然后只需将post方法改为get方法(也是直接将请求参数拼接在URL后面):

  1. // Get请求
  2. [manager GET:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
  3. // 这里可以获取到目前的数据请求的进度
  4. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  5. // 请求成功,解析数据
  6. NSLog(@"%@", responseObject);
  7. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
  8.  
  9. NSLog(@"%@", dic);
  10. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  11. // 请求失败
  12. NSLog(@"%@", [error localizedDescription]);
  13. }];

 三、总结

在很多场合,比如我们需要当前网络请求,下载,上传的进度,使用AFNetworking可以省去很多麻烦,还有许多复杂的应用场合,相信它可以让你省事很多。

原文地址:https://www.cnblogs.com/luoxiaofu/p/5328063.html