标签:
- (void)get{
AFHTTPRequestOperationManager*manager = [AFHTTPRequestOperationManager manager];
/*
第一个参数:需要请求的URL地址字符串
第二个参数:请求时需要传递的参数
第三个参数:请求成功的回调
第四个参数:请求失败的回调
*/
//注意:字典参数中不需要写? AFN会自动添加
NSDictionary*dict = @{@"username":@"Mitchell",
                   @"pwd":@"123456"};
[manager GET:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
 //responseObject 服务器返回数据
 //注意点:如果服务器返回JSON,AFN会自动转换位OC对象
} failure:^(AFHTTPRequestOperation * operation, NSError * error) {
 NSLog(@"%@",error);
}];
}NSDictionary*dict = @{@"username":@"Mitchell",
                    @"pwd":@"123456"};
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
[manager GET:@"" parameters:dict success:^(NSURLSessionDataTask * task, id responseObject) {
} failure:^(NSURLSessionDataTask * task, NSError * error) {
}];AFHTTPRequestOperationManager*manager = [AFHTTPRequestOperationManager manager];
NSDictionary*dict = @{@"username":@"Mitchell",
                    @"pwd":@"123456"};
[manager POST:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
  //responseObject 服务器返回数据
  //注意点:如果服务器返回JSON,AFN会自动转换位OC对象
} failure:^(AFHTTPRequestOperation * operation, NSError * error) {
  NSLog(@"%@",error);
}];NSDictionary*dict = @{@"username":@"Mitchell",
                    @"pwd":@"123456"};
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
[manager POST:@"" parameters:dict success:^(NSURLSessionDataTask * task, id responseObject) {
} failure:^(NSURLSessionDataTask * task, NSError * error) {
}];  //图片:http://img1.imgtn.bdimg.com/it/u=298400068,822827541&fm=21&gp=0.jpg%2F2008-09-08%2F200898163242920_2.jpg&bdtype=0&fr=ala&ala=1&alatpl=others&pos=1
  //MP4:http://mvvideo1.meitudata.com/55d99e5939342913.mp4
  //1、创建AFHTTPSessionManager
  AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
  //创建NSProgress
  NSProgress*progress = [[NSProgress alloc]init];;
  self.progress = progress;
//    progress.completedUnitCount;
//    progress.totalUnitCount;
  //2、利用AFN下载文件
  NSURLRequest*request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mvvideo1.meitudata.com/55d99e5939342913.mp4"]];
  //只要将NSProgress对象传递给AFN,AFN就会在内部自动给NSProgress赋值、会自动修改NSProgress的下载进度。
  NSURLSessionDownloadTask * task = [manager downloadTaskWithRequest:request progress:&progress destination:^ NSURL * (NSURL * targerUrl, NSURLResponse * response) {
      NSLog(@"请求完成 ");
      //请求完成的回调
      //targetPath:下载好的文件的路径
      //response:响应头
      //block的返回值:告诉AFN框架,是否需要将下载好的文件移动到其他路径下
      NSString*path = [response.suggestedFilename cacheDir];
      NSURL*destUrl = [NSURL fileURLWithPath:path];
      return destUrl;
  } completionHandler:^(NSURLResponse * response, NSURL * filePath, NSError * error) {
      NSLog(@"下载完成");
      //下载完成的回调
      //filePath:移动之后的文件路径
      NSLog(@"filePath = %@",filePath);
  }];
  //给NSProgress注册监听,监听progress.completedUnitCount属性的改变
  [progress addObserver:self forKeyPath:@"completedUnitCount" options:NSKeyValueObservingOptionNew context:nil];
  //3、开启任务
  //注意:必须手动执行才会开始下载
  [task resume];
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
  if ([object isKindOfClass:[NSProgress class]]) {
      NSProgress*progress = (NSProgress*)object;        NSLog(@"%f",1.0*progress.completedUnitCount/progress.totalUnitCount);
  }
}//1、创建AFN管理者
  AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
  //2、利用AFN上传文件
  NSDictionary*dic =@{@"username":@"username",@"pwd":@"123456"};
  [manager POST:@"address" parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
      //在这个block 中上传文件数据
      //formData就是专门用于保存需要上传文件的二进制数据的
      NSData*data = [NSData dataWithContentsOfFile:@""];
      //注意:该方法不能用于POST上传
//        [formData appendPartWithFormData:data name:@"file"];
      /*
       第一个参数:需要上传的文件二进制
       第二个参数:服务器对应的参数名称
       第三个参数:文件的文件
       第四个参数:文件的MIME类型
       */
      [formData appendPartWithFileData:data name:@"file" fileName:@"abc.png" mimeType:@"image/png"];
      /*
       第一个参数:需要上传的文件的URL
       第二个参数:服务器对应的参数名称
       第三个参数:文件的文件
       第四个参数:文件的MIME类型
       */
      NSURL*url = [NSURL URLWithString:@"aaa"];
//        [formData appendPartWithFileURL:url name:@"file" fileName:@"abc.png" mimeType:@"image/png" error:nil];
      //如果使用此方法上传文件,AFN会自动获取文件的名称和类型
      [formData appendPartWithFileURL:url name:@"file" error:nil];
        } success:^(NSURLSessionDataTask * task, id responseObject) {
      NSLog(@"成功的回调");
  } failure:^(NSURLSessionDataTask * task, NSError * error) {
      NSLog(@"失败的回调");
  }];  NSDictionary*dict = @{@"username":@"Mitchell",
                        @"pwd":@"123456"};
  AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
  //如果服务器返回的不是JSON数据,那么需要提iAFN如何处理数据
  //只要给AFN的responseSerializer属性赋值位AFXMLParserResponseSerializer,以后AFN就会将服务器的数据设为XML。
//    manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
  //只要给AFN的responseSerializer属性赋值位AFHTTPResponseSerializer,以后AFN就会将服务器的数据设为二进制。
  manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  [manager POST:@"" parameters:dict success:^(NSURLSessionDataTask * task, id responseObject) {
      //注意:AFN默认会将服务器返回的数据当做JSON处理
      //如果服务器返回的是JSON数据,那么会自动转换为OC对象
      NSLog(@"%@",[responseObject class]); 
  } failure:^(NSURLSessionDataTask * task, NSError * error) {
  }];- (void)afNetWorkReachAbility{
  AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManager sharedManager];
  [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
      /*
       typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
       AFNetworkReachabilityStatusUnknown          = -1,不能识别
       AFNetworkReachabilityStatusNotReachable     = 0,没有网
       AFNetworkReachabilityStatusReachableViaWWAN = 1,蜂窝网
       AFNetworkReachabilityStatusReachableViaWiFi = 2,局域网
       };
       */
      switch (status) {
          case AFNetworkReachabilityStatusUnknown:
              NSLog(@"不能识别");
              break;
          case AFNetworkReachabilityStatusNotReachable:
              NSLog(@"没有网");
              break;
          case AFNetworkReachabilityStatusReachableViaWWAN:
              NSLog(@"蜂窝网");
              break;
          case AFNetworkReachabilityStatusReachableViaWiFi:
              NSLog(@"wifi");
              break;
      }   
}];
}可选类型说明
#pragma mark ------------------ 可选类型说明 ------------------
- (void)detail{
  /*
   nullable:代表可以为nil
   __nonnull:代表不能为nil
   */
  /*
  AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
  [manager GET:@"www.baidu.com" parameters:nil success:^nullable void(NSURLSessionDataTask * __nonnull, id __nonnull) {
  } failure:^nullable void(NSURLSessionDataTask * __nonnull, NSError * __nonnull) {
  }];
   */
}标签:
原文地址:http://www.cnblogs.com/W-Kr/p/5462441.html