AFN上传文件和检测网络状态

重点: 掌握 AFN 上传文件的方法
{
      // 1. 创建管理者
      AFHTTPRequestOperationMa nager *mgr = [AFHTTPRequestOperationMa nager manager];
     
      // 2. 发送请求
      [mgr POST:@"http://localhost/upload/upload.php" parameters:nil constructingBodyWithBloc k:^(id formData) {
     
              // formData :设置上传文件所需要的参数,两种上传方法:
              // <1> 通过本地文件的 url 上传
              {
                      NSString *fromFile = @"/Users/likaining/Desktop/meinv.jpg";
                     
                      NSURL *url = [NSURL URLWithString:@"file:///Users/likaining/Desktop/meinv.jpg"];
                      // url :需要上传文件的文件路径
                      // name :服务器接收的文件名.
                      // fileName: 文件在服务器中保存的名字
                      // mimeType : 文件类型
                      [formData appendPartWithFileURL:url name:@"userfile" fileName:@"meinv" mimeType:@"image/jpg" error:NULL];
              }
              // <2> 通过文件的 二进制数据 上传
              {
                      NSData *data = [NSData dataWithContentsOfFile:zipFile];
                     
                      [formData appendPartWithFileData:data name:@"userfile" fileName:@"meinv.zip" mimeType:@"gzip"];
              }
             
              } success:^(AFHTTPRequestOperation *operation, id responseObject) {
                      // 上传成功之后的回调
                      NSLog(@"%@",responseObject);
             
              } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                      //  上传失败之后的回调
                      NSLog(@"失败");
      }];

}

重点: 1.AFN 监测网络状态  2.了解 Reachability 监测网络状态
{
      1. AFN 监测网络状态
      {
              // 创建 网络状态管理者
              AFNetworkReachabilityMan ager *mgr = [AFNetworkReachabilityMan ager sharedManager];
             
              // 监测网络状态的改变
              [mgr setReachabilityStatusCha ngeBlock:^(AFNetworkReachabilitySta tus status) {
                      // 当网络状态发生改变的时候调用这个block
                      switch (status) {
                              case AFNetworkReachabilitySta tusReachableViaWiFi:
                                      NSLog(@"WIFI网络");
                                      break;
                                     
                              case AFNetworkReachabilitySta tusReachableViaWWAN:
                                      NSLog(@"蜂窝网络");
                                      break;
                                     
                              case AFNetworkReachabilitySta tusNotReachable:
                                      NSLog(@"没有网络");
                                      break;
                                     
                              case AFNetworkReachabilitySta tusUnknown:
                                      NSLog(@"未知网络");
                                      break;
                              default:
                                      break;
                      }
              }];
              // 开始监控
              [mgr startMonitoring];
      }
      2.Reachability 监测网络状态
      {
              // 注册通知观察者,网络状态改变时,接收通知!
              [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InternetStatusChanged) name:kReachabilityChangedNoti fication object:nil];

              // 控制器销毁时,移除通知观察者.
              -(void)dealloc
              {
                      [[NSNotificationCenter defaultCenter] removeObserver:self];
              }
             
              // 根据当前网络状态,做出不同的响应.
              - (void)InternetStatusChanged
              {
                      NSLog(@"网络状态改变了");
                     
                      if ([Reachability reachabilityForLocalWiFi ].currentReachabilityStatu s == ReachableViaWiFi) {
                              NSLog(@"Wifi 网络");
                      }
                      if ([Reachability reachabilityForInternetC onnection].currentReachabilityStatu s == ReachableViaWWAN) {
                              NSLog(@"蜂窝移动网络");
                      }
                      if ([Reachability reachabilityForInternetC onnection].currentReachabilityStatu s == NotReachable)
                      {
                              NSLog(@"没有网络");
                      }
              }
              // 创建 Reachability 对象,开始监测网络状态的改变
              - (void)MonitorInternetStatus
              {
                      Reachability *CZReachability = [Reachability reachabilityForInternetC onnection];
                     
                      [CZReachability startNotifier];
                     
                      self.reachability = CZReachability;
              }

              - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
              {
                      [self MonitorInternetStatus];
              }
      }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值