- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLResponse *response, id responSEObject, NSError *error))completionHandler

/**

* request:请求对象

* completionHandler:请求完成调用的Block

* response:服务器的响应信息

* responseObject:服务器返回的数据

* error:错误信息

*/

上传任务(分别上传不同类型的文件)

// 1.上传文件类型的数据

/**

* fileURL:所要上传文件的路径

*/

- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler

// 2. 上传NSData类型的数据

- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler

/**

* bodyData:所要上传的文件数据

*/

// 3. 上传流数据

- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler

/**

* request:通过流数据初始化的请求对象

*/

下载任务

// 1. 普通下载任务

- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request progress:(NSProgress * __autoreleasing *)progress destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler

/**

* progress:管理下载进度

* destination:保存数据调用的Block

* targetPath:数据的保存路径

*/

// 2.支持断点下载的下载任务

- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData progress:(NSProgress * __autoreleasing *)progress destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler

/**

* progress:管理下载进度

* resumeData:断点下载时的断点信息

*/

AFHTTPSessionManager

常用的属性

baseURL(NSURL *),用于监视网络可达性与创建请求对象

requestSerializer(AFHTTPRequestSerializer *),指定指定GET、HEAD与DELETE请求参数的解析格式

responseSerializer(AFHTTPResponseSerializer *),用于指定服务器返回数据的格式

常用方法

初始化

// 1. 通过工厂方法创建AFHTTPSessionManager对象

+ (instancetype)manager

// 2. 通过构造方法创建AFHTTPSessionManager对象

- (instancetype)initWithBaseURL:(NSURL *)url

/**

* 根据url初始化AFHTTPSessionManager对象

*/

- (instancetype)initWithBaseURL:(NSURL *)url sessionConfiguration:(NSURLSessionConfiguration *)configuration

/**

* 根据url与configuration初始化AFHTTPSessionManager对象

*/

请求数据

// 1. GET请求

- (NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

/**

* URLString:请求路径

* parameters:请求参数

* success:请求成功时调用的Block

* responseObject:服务器返回的数据

* failure:请求失败时调用的Block

* error:错误信息

*/

// 2. POST请求

- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

/**

*参数含义与GET请求相同

*/

- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id formData))block success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

/**

* block:用于创建多个数据来源

*/

使用AFN请求网络数据

请求数据(xml/JSON)

创建AFHTTPSessionManager对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

指定对服务器的返回数据格式

//以XML文档的形式返回数据

manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

//以JSON形式返回数据

manager.responseSerializer = [AFJSONResponseSerializer serializer];

设置请求体(类型为XML或JSON)

//请求体通常由服务器指定格式

NSDictionary *params = @{

@"username" : @"账号",

@"pwd" : @"密码",

@"type" : @"XML/JSON"

};

发送请求

[manager GET:@"请求路径" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {

//responseObject:服务器返回的数据

NSLog(@"请求成功");

} failure:^(NSURLSessionDataTask *task, NSError *error) {

//error:错误信息

NSLog(@"请求失败");

}];

上传数据

创建AFHTTPSessionManager对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

创建上传任务

/**基于NSURLConnection*/

[manager POST:@"请求路径" parameters:@{@"用户名" : @"密码" constructingBodyWithBlock:^(idformData) {

//设置需要上传的文件

NSData *data = [NSData dataWithContentsOfFile:@"所要长传文件的路径"];

[formData appendPartWithFileData:data name:@"file" fileName:@"test.png" mimeType:@"image/png"];

} success:^(NSURLSessionDataTask *task, id responseObject) {

//上传成功

} failure:^(NSURLSessionDataTask *task, NSError *error) {

//上传失败

}];

/**基于NSURLSession*/

[manager uploadTaskWithRequest:request fromData:data progress:progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {

//上传数据成功

}];

下载数据

创建AFHTTPSessionManager对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

创建下载任务

/**基于NSURLSession*/

[manager downloadTaskWithRequest:request progress:progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {

// 存储下载数据是调用的Block

} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

//下载完成时调用的Block

}];

afn原理 ios_iOS--AFN实现原理相关推荐

  1. afn原理 ios_iOS AFN实现原理

    AFNetworking是封装的NSURLSession的网络请求 AFNetworking由五个模块组成: 分别由NSURLSession,Security,Reachability,Seriali ...

  2. AbstractQueuedSynchronizer 原理分析 - Condition 实现原理

    1. 简介 Condition是一个接口,AbstractQueuedSynchronizer 中的ConditionObject内部类实现了这个接口.Condition声明了一组等待/通知的方法,这 ...

  3. 电机编码器调零步骤_编码器原理、霍尔应用原理、调整步骤三个方面进行解读编码器调试...

    电机中若具备电子铭牌功能,在应用中就可以直接使用,不需要需要调整编码器:如雷赛交流伺服电机具有电子铭牌功能,能自动识别电机型号,参数并对应匹配参数就能发挥伺服优异性能.若不具备电子铭牌功能的电机,则需 ...

  4. [有限元]虚位移原理和虚力原理的证明的统一逻辑

    原来的可能位移/可能力的约束方程是: 力边界上 可能力=常数1 位移边界上 可能位移=常数2 体内 可能平衡方程=常数3 所以可能功原理的右边有三项 由定义, 虚位移=可能位移1-可能位移2 虚力=可 ...

  5. v-model双向绑定原理_【Vue原理】VModel 白话版

    ↑点击上方 "神仙朱" 一起研究Vue源码吧 专注 Vue 源码分享,为了方便大家理解,分为了白话版和 源码版,白话版让大家可以轻松理解工作原理,源码版让大家更清楚内部操作和 Vu ...

  6. 计算机输入输出设备说课稿,信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)...

    <信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)>由会员分享,可在线阅读,更多相关<信息技术七年级西交大版 第三节 计算机系 ...

  7. 计算机指纹识别的原理步骤,指纹识别原理和过程

    指纹识别概念 指纹识别是生物识别的一种.不过其所分析的对象是指纹特征.指纹特征是最早被发现和应用的,所以指纹识别的历史较之其它识别技术要悠久的多.出现自动化的指纹识别系统到现在,目前的指纹识别技术已经 ...

  8. 计算机原理的拼音,微机原理课程,the course of microcomputer principles,音标,读音,翻译,英文例句,英语词典...

    化工原理课程是化学工业技术和化学工程科学发展的必然产物.十九世纪九十年代国外高等学校相继设置化学工程系,开出的课程大都是针对不同化工行业编写各自的生产工艺学,直到二十世纪初才明确认识到各行各业通用的物 ...

  9. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

  10. java8 stream运行原理之并行流原理详解

    上一篇文章<java8 stream运行原理之顺序流原理详解>介绍了顺序流的执行原理,本文接着上一篇介绍并行流的执行原理. 一.如何创建并行流 调用parallel()方法可以创建并行流, ...

最新文章

  1. 安装java时,配置环境变量classpath的作用
  2. const常量和readonly常量区别
  3. 千鸟弹幕机器人_千鸟熊猫TV直播弹幕机器人软件
  4. 用wordpress制作网站的总结
  5. 倍福(Beckhoff)嵌入式控制器PLC
  6. Maven补全之生命周期(Lifecycle)
  7. php pdo效率,php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
  8. 函数调用关系python_追踪python函数调用关系
  9. 快手电商产品经理实习岗位一轮笔试
  10. MATLAB关于xlsread函数的用法
  11. java生成水印图片
  12. Educoder Python顺序结构习题
  13. 系统性谈谈软件可靠性——第4讲:软件可靠性测试
  14. flutter dart 中dynamic var object的区别
  15. 工具推荐——Apt_t00ls
  16. 编程环境和软件工具安装手册
  17. 【转载】定位系统中的多径效应
  18. Can only install one of: topthink/think-installer[v2.0.0, v1.0.12].
  19. 仿射密码 python实现
  20. 程序人生:如果纯做业务测试的话,在测试行业有出路吗?

热门文章

  1. 网络安全之WEB注入漏洞(上)
  2. 交换机和用户计算机连接,怎么连接计算机和交换机?
  3. 高情商的女人都是怎么吃定男人的
  4. 什么是商品货币和欧系货币?
  5. 考研英语长难句(刘晓燕)笔记 第一课 奋斗的开始——简单句
  6. [高手进阶]反手劈吊斜线技术解码及练习方法
  7. 线性筛与欧拉函数、莫比乌斯函数
  8. GPS软件接收机matlab程序学习笔记(一)
  9. 【如题】运行java程序提示没有为模块指定JDK
  10. Nancy的基本用法