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 上传文件
必须按照格式写,一个空格或者回车都不能多。    // 一定要注意这个格式是固定的
    /* 文件参数格式
     --分割线\r\n
     Content-Disposition: form-data; name="file"; filename="文件名"\r\n
     Content-Type: 文件的MIMEType\r\n
     \r\n
     文件数据
     \r\n
     // 结束标记
     \r\n
     --分割线--\r\n
     \r\n
     */
     // 主要是参数第二个参数要传入 **`请求体`**
       [[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];
}

 

转载于:https://www.cnblogs.com/ytmaylover/p/5066205.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值