AFN 的一些记录
来源:互联网 发布:炒股训练软件 知乎 编辑:程序博客网 时间:2024/06/03 17:26
状态码
status code : 200
说明,网络请求成功, 二进制数据,已经正确传到本地, 数据解析出问题
AFN请求数据格式
请求的数据格式(一般都是 HTTP
二进制数据,RESTful设计风格要求 POST JSON)
请求的数据格式
AFHTTPRequestSerializer HTTP,二进制,默认的
AFJSONRequestSerializer JSON
AFPropertyListRequestSerializer PList
AFN响应数据格式
响应的数据格式(JSON 是使用最广的数据格式,没有之一!)默认就是 JSON,能够自动实现 JSON 的反序列化
响应的数据格式
AFHTTPResponseSerializer 二进制
AFJSONResponseSerializer JSON,默认的
AFXMLParserResponseSerializer XML 解析器
AFXMLDocumentResponseSerializer (Mac OS X) iPhone不能直接使用,需要用GData-XML
AFPropertyListResponseSerializer PList
AFImageResponseSerializer Image,AFN同样提供了异步加载网络图片的功能
但是:不支持 GIF
,只有 SDWebImage
支持
AFCompoundResponseSerializer 组合
常见数据格式的小结
- 发送二进制数据,返回 JSON
AFN 的默认格式
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
- 发送二进制数据,返回 JSON
如果不是默认格式, 要制定mgr的格式
2. 发送二进制数据,返回 XML
1> SAX 解析
mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
2> DOM 解析(对节点增加或者删除) 二进制数据格式
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
[[GDataXMLDocument alloc] initWithData:data error:NULL];
3. 发送 JSON 修改请求的数据格式
// 1. 设置请求的格式
mgr.requestSerializer = [AFJSONRequestSerializer serializer];
// 2. 设置响应的格式(如果返回的是纯文本)
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
4. 其他:Image,用 SDWebImage 居多!
PUt上传
- (void)putUpload {
// 1. url
NSURL *url = [NSURL URLWithString:@”http://localhost/uploads/zzz.mp4“];
// 2. AFN 上传
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 3. request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @”PUT”;
// 身份验证
[request setValue:[@”admin:123456” basicAuthString] forHTTPHeaderField:@”Authorization”];
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@”搞笑视频.mp4” withExtension:nil];
// * upload 上传,需要自己 resume
// * 学习第三方框架的好处:可以发现自己的知识空缺点,跟大牛直接学习!
// iOS 7.0 之后推出的,专门用于跟踪进度的类,可以跟踪进度树
NSProgress *progress = nil;
[[mgr uploadTaskWithRequest:request fromFile:fileURL progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
NSLog(@”%@ %@”, responseObject, response);
}] resume];
// 此处已经获得进度对象 - 监听
进度
NSLog(@”%@”, progress);
// KVO监听进度[progress addObserver:self forKeyPath:@"completedUnitCount" options:0 context:nil];
}
// 是所有 KVO 统一调用的一个方法,最好判断一下对象类型
- (void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void *)context {
// NSLog(@”%@”, object);
// 判断对象是否是 NSProgress 对象
if ([object isKindOfClass:[NSProgress class]]) {
NSProgress *p = object;
NSLog(@”%lld - %lld”, p.completedUnitCount, p.totalUnitCount);
NSLog(@”%@ - %@”, p.localizedDescription, p.localizedAdditionalDescription);
// * 显示百分比
NSLog(@”%f”, p.fractionCompleted);
}
}
====
AFN 上传多个文件
网络 day8 11
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];// 上传NSDictionary *params = @{@"username": @"da xiagua"};[mgr POST:@"http://localhost/upload/upload-m.php" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { //(代理不用管, 默认已经设好) /** 参数 1. 本地文件 URL 2. name: 负责上传文件的字段名,咨询公司的后端程序员,或者有文档 3. error */ NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"04.jpg" withExtension:nil]; [formData appendPartWithFileURL:fileURL name:@"userfile[]" error:NULL]; // 上传多个文件 /** 参数 1. 本地文件 URL 2. name: 负责上传文件的字段名,咨询公司的后端程序员,或者有文档 3. fileName: 保存在服务器的文件名 4. mimeType: 告诉服务器上传文件的类型 5. error */ NSURL *fileURL2 = [[NSBundle mainBundle] URLForResource:@"AppIcon.jpg" withExtension:nil]; [formData appendPartWithFileURL:fileURL2 name:@"userfile[]" fileName:@"001.jpg" mimeType:@"application/octet-stream" error:NULL];} success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"%@", responseObject);} failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"%@", error);}];
- AFN 的一些记录
- AFN的使用
- AFN的 基本使用
- AFN的使用
- AFN的使用方式
- AFN的使用
- AFN-的基本使用
- AFN的网络监测
- AFN 的使用问题
- AFN的再封装
- ASI、AFN的区别
- 记录:AFN第三方框架,上传文件的子文件夹也需要打开读写权限。
- AFN的一些常见的用法(GET,POST)解析(XML,Json)
- AFN
- AFN
- AFN
- AFN
- AFN
- 观察者模式
- easyUI日常问题之自定义输入框验证
- C4.5决策树算法
- Java 多线程(二) 线程的实现
- Lua 字符串
- AFN 的一些记录
- linux安装oracle 11g r2 详细步骤及问题
- Java注解Annotation
- Java资源中文版
- Linux Mint 初涉
- Android相机开发和遇到的坑
- 快速软件开发——经典错误(笔记)
- C#之泛型使用 IEnumerable
- 导入项目问题