zoukankan      html  css  js  c++  java
  • 第三方类AFNetworking

    1、AFNetworking简介

    AFNetworking是一个在iOS开发中使用非常多的轻量级网络开源库
    适用于iOS以及Mac OS X。它构建于在(Apple iOS开发文档) NSURLConnection ,  NSOperation , 以及其他熟悉的Foundation技术之上。
    它拥有良好的架构,丰富的api,以及模块化构建方式,使得使用起来非常轻松。
    官方链接http://cocoadocs.org/docsets/AFNetworking/1.3.0/

    2、AFNetworking使用(使用CocoaPods管理)

    2.1网络监测

     1 #import "ViewController.h"
     2 // 网络请求的头文件
     3 #import <AFNetworking.h>
     4 @interface ViewController ()
     5 {
     6     /// 进行网络监测判断的BOOL值
     7     BOOL isOpen;
     8 }
     9 @end
    10 
    11 @implementation ViewController
    12 
    13 - (void)viewDidLoad {
    14     [super viewDidLoad];
    15     
    16 }
    17 
    18 #pragma mark - 实时监测当前网络状态
    19 - (IBAction)networkMonitoringAction:(id)sender {
    20     if (!isOpen) {
    21         // 打开网络监测
    22         [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    23         isOpen = YES;
    24     } else {
    25         // 关闭网络监测
    26         [[AFNetworkReachabilityManager sharedManager] stopMonitoring];
    27         isOpen = NO;
    28     }
    29     // 判断当前是wifi状态、3g、4g还是网络不可用状态
    30     [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    31         /**
    32          AFNetworkReachabilityStatusUnknown          = -1,  // 未知网络
    33          AFNetworkReachabilityStatusNotReachable     = 0,   // 没有网络连接
    34          AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3g,4g
    35          AFNetworkReachabilityStatusReachableViaWiFi = 2,   // WIFI状态
    36          */
    37         switch (status) {
    38             case AFNetworkReachabilityStatusUnknown:
    39                 NSLog(@"当前网络处于未知状态");
    40                 break;
    41             case AFNetworkReachabilityStatusNotReachable:
    42                 NSLog(@"当前没有网络连接");
    43                 break;
    44             case AFNetworkReachabilityStatusReachableViaWiFi:
    45                 NSLog(@"当前处于WIFI状态");
    46                 break;
    47             case AFNetworkReachabilityStatusReachableViaWWAN:
    48                 NSLog(@"当前处于移动网络状态,请您注意您的流量");
    49                 break;
    50             default:
    51                 break;
    52         }
    53     }];
    54     
    55 }

    2.2 Get、Post请求,网络加载时"菊花"的设置

     1 #import "ViewController.h"
     2 // 网络请求的头文件
     3 #import <AFNetworking.h>
     4 #import <AFNetworkActivityIndicatorManager.h>
     5 @interface ViewController ()
     6 /// 用于网络请求的session对象
     7 @property (nonatomic, strong) AFHTTPSessionManager *session;
     8 
     9 @end
    10 
    11 @implementation ViewController
    12 
    13 - (void)viewDidLoad {
    14     [super viewDidLoad];
    15     // 单例 初始化session对象
    16     self.session = [AFHTTPSessionManager manager];
    17     // 设置请求返回支持的文件类型
    18     self.session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"application/x-json",@"text/html", nil];
    19 
    20     // 转圈圈的菊花默认是关闭的,需要手动打开,在网络慢的情况下请求数据时,手机左上角就会出现转圈圈的菊花
    21     [AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
    22 }
    23 
    24 #pragma mark - get网络请求
    25 - (IBAction)getRequestAction:(id)sender {
    26     /**
    27      参数1:get请求的网址
    28      参数2:拼接的参数,get请求不需要
    29      参数3:当前进度,下载时常用,block传进来的参数downloadProgress就是下载进度
    30      参数4:请求成功时调用的block,responseObject是请求到的数据
    31      参数5:请求失败时调用的block
    32      */
    33     [self.session GET:@"http://api.yhouse.com/m/city/dynmiclist" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
    34         NSLog(@"下载进度");
    35     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    36         // 打印请求到的数据
    37         NSLog(@"请求成功%@", responseObject);
    38        // 解析数据代码写在这里
    39     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    40         NSLog(@"请求失败");
    41     }];
    42 }
    43 #pragma mark - post网络请求(表单上传)
    44 - (IBAction)postRequestAction:(id)sender {
    45     // body体
    46     /*{
    47      do = "pri_memberlist";
    48      "member_id" = zpHr2dsRvQQxYJxo2;
    49      "workspace_id" = ILfYpE4Dhs2gWcuQx;
    50      }*/
    51     
    52     /**
    53      参数1:post请求的网址
    54      参数2:拼接的body体
    55      参数3:当前上传进度,block传进来的参数uploadProgress就是上传进度
    56      参数4:请求成功时调用的block,responseObject是请求到的数据
    57      参数5:请求失败时调用的block
    58      */
    59     NSString *urlStr = @"http://m.taskwedo.com/API/wedo1/wedo.php";
    60     NSMutableDictionary *dataDic = [NSMutableDictionary dictionary];
    61     [dataDic setValue:@"pri_memberlist" forKey:@"do"];
    62     [dataDic setValue:@"zpHr2dsRvQQxYJxo2" forKey:@"member_id"];
    63     [dataDic setValue:@"ILfYpE4Dhs2gWcuQx" forKey:@"workspace_id"];
    64     
    65     [self.session POST:urlStr parameters:dataDic progress:^(NSProgress * _Nonnull uploadProgress) {
    66         NSLog(@"上传进度");
    67     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    68         NSLog(@"请求成功%@", responseObject);
    69         // 解析数据代码写在这里
    70     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    71         NSLog(@"请求失败");
    72     }];
    73 }   
  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/fearlessyyp/p/5536014.html
Copyright © 2011-2022 走看看