iOS 开发 AFNetworking实现网络请求,上传和下载
来源:互联网 发布:列数据的作用 编辑:程序博客网 时间:2024/05/20 09:27
AFNetworking数据格式
- 请求的数据格式
- 响应数据格式
- 常见问题
1.AFN默认不支持接收 text/html 文件类型的;如果你非要接收这个文件,就需要自己添加
2.AFN默认把数据党JSON在解析;如果你要解析非JSON的数据,就需要额外的设置;还有,如果你要解析html,就需要让AFN给你返回原始的二进制数据,自己解析.
3.AFN默认不支持接收 text/plain 文件类型的;如果你非要接收这个文件,就需要自己添加
4.AFN默认只能向服务器发送简单的二进制数据(GET和POST请求信息).不支持发送JSON格式的数据;如果非要通过AFN发送json到服务器,那么就需要告诉AFN,让它做支持;
// 1.创建网络请求管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 让AFN默认也支持接收text/html文件类型 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html",@"text/plain", nil]; // 让AFN返回原始的二进制数据,我们自己来解析 manager.responseSerializer = [AFHTTPResponseSerializer serializer];// // 让AFN返回原始的XNL数据,我们自己来解析// manager.responseSerializer = [AFXMLParserResponseSerializer serializer];// // 让AFN返回原始的plist数据,我们自己来解析// manager.responseSerializer = [AFPropertyListResponseSerializer serializer];// // 让AFN支持json数据的发送// manager.requestSerializer = [AFJSONRequestSerializer serializer];
AFNetworking实现GET / POST网络请求
1.AFNetworking 网络工具-网络请求的三次封装 OC版
2.AFNetworking 网络工具-网络请求的三次封装 Swift版
AFNetworking实现文件上传
//MARK: 上传头像到服务器- (void)updateIconImage:(UIImage *)newIconImage { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; NSString *URLString = [NSString stringWithFormat:@"%@/mobile/uc/updateUsersimg",BaseURLString]; //设备唯一标识符 NSString *deviceid = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"]; // file---存到服务器里的字段--// 文件上传的文本信息 NSDictionary *parameters = @{ @"deviceid":deviceid, @"file":@"newIconImage.jpg", @"token":token }; [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *path = [documents stringByAppendingPathComponent:@"newIconImage.jpg"]; NSData *data = [NSData dataWithContentsOfFile:path]; // formData : 用于拼接文件上传时的表单数据 [formData appendPartWithFileData:data name:@"file" fileName:@"newIconImage.jpg" mimeType:@"image/jpeg"]; } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@",error); }];}//头像保存到本地- (void)saveIconImageToDocument:(UIImage *)newIconImage withName:(NSString *)newIconImageName { NSData *imageData = UIImageJPEGRepresentation(newIconImage, 0.5); NSString *fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:newIconImageName]; [imageData writeToFile:fullPath atomically:NO];}
AFNetworking实现文件下载
// MARK: 下载头像- (void)downloadIconImage { // 1.网络请求管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 让AFN返回原始的二进制数据,我们自己来解析 manager.responseSerializer = [AFHTTPResponseSerializer serializer]; NSString *deviceid = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"]; if (token == nil) { return; } NSString *URLString = [NSString stringWithFormat:@"%@/mobile/uc/getUsersimg?token=%@&deviceid=%@",BaseURLString,token,deviceid]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URLString]]; NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { // 在这个代码块里面指定文件下载完成之后的缓存路径,指定好了之后,会自动的剪切到completionHandler里面 NSString *fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"newIconImage.jpg"]; NSURL *pathURL = [NSURL fileURLWithPath:fullPath]; return pathURL; } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { //下载完后,从Documents里获取头像,并显示 NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *newIconImagePath = [documents stringByAppendingPathComponent:@"newIconImage.jpg"]; UIImage *newIconImage = [UIImage imageWithContentsOfFile:newIconImagePath]; if (newIconImage == nil) { self.iconImageView.image = [UIImage imageNamed:@"myCenter_placeholder"]; } else { self.iconImageView.image = newIconImage; } }]; [downloadTask resume];}
0 0
- iOS 开发 AFNetworking实现网络请求,上传和下载
- iOS开发 - AFNetworking网络请求
- iOS开发 - AFNetworking网络请求
- iOS开发用AFNetworking和MJRefresh实现网络请求和下拉刷新、上拉加载
- iOS NSURLSession 实现网络请求-文件下载-上传-后台下载
- iOS开发: AFNetworking网络请求:NSURLSession版
- iOS 使用AFNetworking进行下载和上传
- ios AFNetworking网络请求
- AFNetworking实现网络请求
- iOS网络编程————AFNetworking上传和下载
- iOS开发 ----- 网络请求5 ----- NSURLsession实现上传数据
- iOS-OC-AFNetworking上传和下载(回调下载进度)
- IOS学习 网络 AFNetworking单文件上传 取消单个队列和全部队列的方法(取消网络请求)
- iOS -- NSURLSession网络请求,上传,下载
- iOS AFNetworking 取消网络请求
- iOS中网络请求--AFNetworking
- iOS开发——网络请求案例汇总(AFNetworking)
- iOS开发之网络请求(基于AFNetworking的再封装)
- Java基础01 - 数据类型
- Java中使用log4j记录日志
- S5PV210-ADC
- JDK、JRE、JVM之间的关系
- 安卓开发基础小总结(第一章)
- iOS 开发 AFNetworking实现网络请求,上传和下载
- web worker的使用
- 使用模糊查询Like时中文匹配下划线通配符无效的问题
- jQuery二级联动
- 多线程播放视音频
- 面试题精华-框架
- openwrt入门
- 用redis处理并发问题的代码
- 编译原理学习笔记——自底而上语法分析