• iOS26 AFNetworking


    - (void)GET{  
      // GET
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];    
      // 将数据作为参数传入
        NSDictionary *dict = @{   @"username":@"12", @"pwd":@"13" };
        [mgr GET:[NSString stringWithFormat:@"http://123.123.123.123/login"] parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) {       
       NSLog(@"success:%@",responseObject);
       
        } failure:^(NSURLSessionDataTask *task, NSError *error) {    
            NSLog(@"failure:%@",error);
        }];
    }- (void)POST{
         // POST
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];  
           // 将数据作为参数传入
        NSDictionary *dict = @{  @"username":@"12",@"pwd":@"13" };
        [mgr POST:[NSString stringWithFormat:@"http://123.123.123.123/login"] parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) {      
             NSLog(@"success:%@",responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {   
                  NSLog(@"failure:%@",error);
        }];
    }
    文件上传:appendPartWithFileData:
    - (void)upload
    {   
     // 文件上传
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
         // 将数据作为参数传入
        [mgr POST:@"http://123.123.123.123/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {    
             // formdata 为要上传的数据   
             [formData appendPartWithFileData:[NSData dataWithContentsOfFile:@"/Users/song/Desktop/test.png"] name:@"file" fileName:@"wer.png" mimeType:@"image/png"];
        } success:^(NSURLSessionDataTask *task, id responseObject) {    
                    NSLog(@"success:%@",responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {       
                     NSLog(@"failure:%@",error);
        }];
    }
     NSURLSession 上传文件
    必须按照格式写,一个空格或者回车都不能多。    // 一定要注意这个格式是固定的
        /* 文件参数格式
         --分割线
    
         Content-Disposition: form-data; name="file"; filename="文件名"
    
         Content-Type: 文件的MIMEType
    
         
    
         文件数据
         
    
         // 结束标记
         
    
         --分割线--
    
         
    
         */
         // 主要是参数第二个参数要传入 **`请求体`**
           [[self.session uploadTaskWithRequest:request fromData:body completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {      
      NSLog(@"---%@",[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
        }] resume];
                     
    文件下载
    下载文件需要返回一个保存路径,还需要手动启动resume
    - (void)download
    {   
     // 下载
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
        [[mgr downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://123.123.123.123/resources/images/minion_02.png"]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {      
       // 下载文件需要返回一个保存路径,还需要手动启动resume
            NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];       
           return [NSURL fileURLWithPath:[path stringByAppendingPathComponent:response.suggestedFilename]];
        } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {      
             NSLog(@"%@",filePath.path);
        }] resume];
    }
    默认是解析json,如果想解析xml,需要指定管理器的解析器为xml
    如果解析其他类型的文件,就将responseSerializer属性设置为ADHTTPResonseSericlizer,服务器返回什么就接受什么类型的数据。
    -(void)returnType
    {    
    // 默认返回的数据时JSON,如果想返回XML,设置属性responseSerializer
        // 如果想返回服务器上文件本来的类型,设置AFHTTPResponseSerializer
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];  
      // responseSerializer 用来解析服务器返回的数据
        mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
       // 直接使用“服务器本来返回的数据”,不做任何解析
        // 告诉AFN,以XML形式解析服务器返回的数据
        //    mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
        // 将数据作为参数传入
        [mgr GET:[NSString stringWithFormat:@"http://123.123.123.123/resources/images/minion_02.png"] parameters:nil success:^(NSURLSessionDataTask *task,id response) {     
                 NSLog(@"success:%zd",[response length]);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {      
                 NSLog(@"failure:%@",error);
        }];}
    手机联网状态
       - 手机联网状态:`AFNetWorkReachabityManager`
        - 苹果自带:`Reachability` ,
         通过通知监听系统状态手机联网状态:AFNetWorkReachabityManager
      /*
        typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
         AFNetworkReachabilityStatusUnknown          = -1, // 未知
         AFNetworkReachabilityStatusNotReachable     = 0, // 未联网
         AFNetworkReachabilityStatusReachableViaWWAN = 1, // 蜂窝网络
         AFNetworkReachabilityStatusReachableViaWiFi = 2, // wifi
         };
         */
    - (void)monitor
    {  
        // 监控网络状态
        AFNetworkReachabilityManager *mgr  = [AFNetworkReachabilityManager sharedManager];    
         // 网络状态改变就会调用这个block
        [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {     
             NSLog(@"网络状态改变:%zd",status);
        }];  
       // 打开监听器
        [mgr startMonitoring];   
    }  
        
     手机联网状态:Reachability
    /*
         typedef enum : NSInteger {
         NotReachable = 0, // 网络不可知
         ReachableViaWiFi, // WIFI
         ReachableViaWWAN  // 移动网络
         } NetworkStatus;
         */
    
    手机的状态改变,会给系统发送通知,所以可以添加监听器,接收这个通知。/**通知*/
    
    @property (nonatomic, strong) Reachability *reach;
    - (void)viewDidLoad
    {
        [super viewDidLoad];   
     // 添加通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];    
     // 接收通知
        self.reach = [Reachability reachabilityForInternetConnection];
        [self.reach startNotifier];
    }
    - (void)getNetworkStatus
    {    
        // 获取手机网络状态
        if([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable){
             NSLog(@"wifi");
        }    else if([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) { 
                NSLog(@"3G?4G");
               }    else { 
                       NSLog(@"Nothing at all!");
                       }
      }
    - (void)dealloc
    {    // 停止监听器
        [self.reach startNotifier];    // 移除通知
          [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
    }
  • 相关阅读:
    步步为营 .NET 设计模式学习笔记 十三、Bridge (桥接模式)
    步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
    Web服务器及客户端软件推荐
    步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
    步步为营 .NET 代码重构学习笔记 十
    步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
    步步为营 .NET 代码重构学习笔记 八
    新浪微博的文字滚动更新效果
    几段javascript实现一个打字游戏效果
    jquery实现简单的手风琴效果
  • 原文地址:https://www.cnblogs.com/ytmaylover/p/5066205.html
Copyright © 2020-2023  润新知