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];
}
时间: 2024-08-09 23:49:56

iOS26 AFNetworking的相关文章

ios AFNetworking 3.0 原码阅读分析 (一)(AFURLRequestSerialization)

本文主要内容是讲AFNetworking中的AFURLRequestSerialization.它主要的作用是在我们要发送一个网络请求的时候帮助我们创NSMutableURLRequest并封装好所需要的参数到NSMutableURLRequest中.那它内部做了些什么,提供了什么功能,使得我们进行网络请求时候变得如此方便.简单.好像我们什么都不用管就能建立一个正确的请求体NSURLRequest.接下来就会一步步揭开它神秘的面纱. 概览 首先看一下在AFURLRequestSerializat

AFNetworking 3.0x版本最新特性

AFNetworking是一款在OS X和iOS下都令人喜爱的网络库.为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本.本指南将引导您完成这个过程. 本指南是为了引导使用AFNetworking 2.x升级到最新的版本API,以达到过渡的目的,并且解释了新增和更改的设计结构. 新设备要求: iO

AFNetworking发送和接收字符串时报3840错误的解决办法

AFNetworking框架默认请求类型和响应类型都是JSON格式的,在特殊情况下,我们使用字符串形式的时候,就会报3840错误,如何解决呢? 设置请求管理者: // 因为传递过去和接收回来的数据都不是json类型的,所以在这里要设置为AFHTTPRequestSerializer和AFHTTPResponseSerializer mgr.requestSerializer = [AFHTTPRequestSerializer serializer];// 请求 mgr.responseSeri

iOS开发 之 AFNetworking的基本使用

首先下载AFNetworking 然后在需要使用的类中,导入如下2个头文件: #import "AFNetworking.h"//主要用于网络请求方法 #import "UIKit+AFNetworking.h"//里面有异步加载图片的方法 GET请求网络数据方式: -(void)obtainData {     // 启动系统风火轮     [UIApplication sharedApplication].networkActivityIndicatorVisi

AFNetworking imageView button设置图片缓存

如果对AFNetworking 下载的图片不进行缓存,可能会导致每次加载  image图片的时候都会重新 下载图片; 严重浪费资源: AFNetworking有自带的很方便的配置缓存图片的方法: 在 UIKit+AFNetworking中, imageView和Button的类目都可以设置缓存: 方法如下: button [UIButton setSharedImageCache:[UIButton sharedImageCache]]; imageView [UIImageView setSh

AFNetworking 2.5.0版本的使用

http://afnetworking.com/ http://cocoadocs.org/docsets/AFNetworking/2.5.0/ 1. 下载源码并进行编译 源码地址 http://pan.baidu.com/s/1jG24w3W 2. 判断当前是否有网络,基准网址为 http://baidu.com/ 源码: 可以用来监测WWAN或者WiFi或者断网状态;) // 基准baseURL NSURL *baseURL = [NSURL URLWithString:@"http://

AFNetworking的使用

AFN  1 AFN的框架结构 NSURLSession: NSURLSessionManager(对NSURLSession的封装); AFHttpSessionManager(会话管理者) 序列化处理serialization: AFURLRequestSerialization(请求); AFURLResponseSerialization(响应) 扩展功能: AFSecurityPolicy(安全); AFNetworkReachabilityManager(监听) UIKit+AFNe

iOS 网络编程:AFNetworking

1 简介 1.1 概念 AFNetworking网络框架并不是IOS自带的框架,而是第三方的开源框架.它是对NSURLConnection和NSURLSession API的封装,但是目前AFNetworking 3.0已经删除了基于 NSURLConnection API的所有支持,所以本文只记录基于NSURLSession API的相关接口.AFNetworking 框架是基于Object-C语言,若需要使用Swift语言版可以了解Alamofire框架. 个人感觉学习AFNetworkin

ios开发中-AFNetworking 的简单介绍

Blog: Draveness 关注仓库,及时获得更新: iOS-Source-Code-Analyze 在这一系列的文章中,我会对 AFNetworking 的源代码进行分析,深入了解一下它是如何构建的,如何在日常中完成发送 HTTP 请求.构建网络层这一任务. AFNetworking 是如今 iOS 开发中不可缺少的组件之一.它的 github 配置上是如下介绍的: Perhaps the most important feature of all, however, is the ama