afn原理 ios_iOS--AFN实现原理
- (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实现原理相关推荐
- afn原理 ios_iOS AFN实现原理
AFNetworking是封装的NSURLSession的网络请求 AFNetworking由五个模块组成: 分别由NSURLSession,Security,Reachability,Seriali ...
- AbstractQueuedSynchronizer 原理分析 - Condition 实现原理
1. 简介 Condition是一个接口,AbstractQueuedSynchronizer 中的ConditionObject内部类实现了这个接口.Condition声明了一组等待/通知的方法,这 ...
- 电机编码器调零步骤_编码器原理、霍尔应用原理、调整步骤三个方面进行解读编码器调试...
电机中若具备电子铭牌功能,在应用中就可以直接使用,不需要需要调整编码器:如雷赛交流伺服电机具有电子铭牌功能,能自动识别电机型号,参数并对应匹配参数就能发挥伺服优异性能.若不具备电子铭牌功能的电机,则需 ...
- [有限元]虚位移原理和虚力原理的证明的统一逻辑
原来的可能位移/可能力的约束方程是: 力边界上 可能力=常数1 位移边界上 可能位移=常数2 体内 可能平衡方程=常数3 所以可能功原理的右边有三项 由定义, 虚位移=可能位移1-可能位移2 虚力=可 ...
- v-model双向绑定原理_【Vue原理】VModel 白话版
↑点击上方 "神仙朱" 一起研究Vue源码吧 专注 Vue 源码分享,为了方便大家理解,分为了白话版和 源码版,白话版让大家可以轻松理解工作原理,源码版让大家更清楚内部操作和 Vu ...
- 计算机输入输出设备说课稿,信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)...
<信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)>由会员分享,可在线阅读,更多相关<信息技术七年级西交大版 第三节 计算机系 ...
- 计算机指纹识别的原理步骤,指纹识别原理和过程
指纹识别概念 指纹识别是生物识别的一种.不过其所分析的对象是指纹特征.指纹特征是最早被发现和应用的,所以指纹识别的历史较之其它识别技术要悠久的多.出现自动化的指纹识别系统到现在,目前的指纹识别技术已经 ...
- 计算机原理的拼音,微机原理课程,the course of microcomputer principles,音标,读音,翻译,英文例句,英语词典...
化工原理课程是化学工业技术和化学工程科学发展的必然产物.十九世纪九十年代国外高等学校相继设置化学工程系,开出的课程大都是针对不同化工行业编写各自的生产工艺学,直到二十世纪初才明确认识到各行各业通用的物 ...
- 支持向量机原理(四)SMO算法原理
支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...
- java8 stream运行原理之并行流原理详解
上一篇文章<java8 stream运行原理之顺序流原理详解>介绍了顺序流的执行原理,本文接着上一篇介绍并行流的执行原理. 一.如何创建并行流 调用parallel()方法可以创建并行流, ...
最新文章
- 安装java时,配置环境变量classpath的作用
- const常量和readonly常量区别
- 千鸟弹幕机器人_千鸟熊猫TV直播弹幕机器人软件
- 用wordpress制作网站的总结
- 倍福(Beckhoff)嵌入式控制器PLC
- Maven补全之生命周期(Lifecycle)
- php pdo效率,php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
- 函数调用关系python_追踪python函数调用关系
- 快手电商产品经理实习岗位一轮笔试
- MATLAB关于xlsread函数的用法
- java生成水印图片
- Educoder Python顺序结构习题
- 系统性谈谈软件可靠性——第4讲:软件可靠性测试
- flutter dart 中dynamic var object的区别
- 工具推荐——Apt_t00ls
- 编程环境和软件工具安装手册
- 【转载】定位系统中的多径效应
- Can only install one of: topthink/think-installer[v2.0.0, v1.0.12].
- 仿射密码 python实现
- 程序人生:如果纯做业务测试的话,在测试行业有出路吗?