iOS开发之适配IPV6更新网络处理为AFNetworking3.x, 集成以及遇到的一些问题总结。
来源:互联网 发布:java socket 发送 编辑:程序博客网 时间:2024/06/08 18:56
(一). 项目集成 (由于我这个是老项目,所以用的是最原始的集成方法)
1.下载最新源码:下载地址
2.然后直接把下载下来的源码文件夹AFNetworking直接拖入工程。
3.添加类库 Security.framework、MobileCoreServices.framework、SystemConfiguration.framework
4. 然后在预处理文件中添加 #import "AFNetworking.h"
5. 大功告成
(二). 常用用法
1. GET
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];[session GET:@"请求的url" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"成功");} failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"失败"); }];
2. POST
NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; NSString *string = [user objectForKey:USER_MAGAZINE_TIMESTAMPS]; if (string == nil) { return; } AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; NSDictionary *dict = @{@"time_stamps":string}; [manager POST:MAGAZINE_NO_READ_NUMBER parameters:dict progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary* magazineDic = (NSDictionary *)responseObject; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"error %@",error); }];
3. download
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];NSURLRequest *request = [NSURLRequest requestWithURL:URL];NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { NSLog(@"File downloaded to: %@", filePath);}];[downloadTask resume];
4. upload
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];NSURLRequest *request = [NSURLRequest requestWithURL:URL];NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (error) { NSLog(@"Error: %@", error); } else { NSLog(@"Success: %@ %@", response, responseObject); }}];[uploadTask resume];
(三). 项目遇到的问题
第一个问题: 集成完成AF以后,我就迫不及待的使用它的post方法,出现了以下的error信息。
Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x1468a1f80> { URL: https://magalive.sizzee.com:8089/servlet/GetNoReadMagaCountServlet } { status code: 200, headers { Connection = "keep-alive"; "Content-Encoding" = gzip; "Content-Type" = "text/html;charset=utf-8"; Date = "Tue, 24 May 2016 03:34:19 GMT"; "Set-Cookie" = "SERVERID=a01bf0c5559d5d808207dc9e02fa4f60|1464060859|1464060856;Path=/"; "Transfer-Encoding" = Identity; Vary = "Accept-Encoding";} }, NSErrorFailingURLKey=https://magalive.sizzee.com:8089/servlet/GetNoReadMagaCountServlet, com.alamofire.serialization.response.error.data=<7b22676c 6f62616c 5f696d67 5f75726c 223a2268 74747073 3a2f2f6d 6167617a 696e652e 6d656469 612e7369 7a7a6565 2e636f6d 222c226e 6f526561 64436f75 6e74223a 307d>, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}
大家可以很清楚的发现,这是返回类型不匹配所导致的。 那怎么解决这个问题呢。
在使用AFHTTPSessionManager的时候,加上下面第二句代码。把text/html添加到集合中。
第一种解决方法:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
在AFNetworking文件夹中AFURLResponseSerialization.m文件中,找到初始化acceptableContentTypes的位置,修改成下面这句。 其实就是在原有的基础上添加了@"text/html"。
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",nil];
第二个问题是.给服务器传参数老是传不过去?
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; //申明请求的类型是json类型 manager.responseSerializer = [AFJSONResponseSerializer serializer]; //申明返回的类型是json类型看以上代码,可以发现我指定了请求的类型是json方式传给服务器,但是实际上我却没有以json的格式吧参数传给服务器,所以导致AF直接把我的参数过滤掉,所以服务器就一直收不到参数,解决方法就是,直接注释掉
manager.requestSerializer = [AFJSONRequestSerializer serializer];这句代码。
0 0
- iOS开发之适配IPV6更新网络处理为AFNetworking3.x, 集成以及遇到的一些问题总结。
- iOS开发中遇到的一些问题以及解决办法总结
- iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配
- iOS开发之AFNetworking3.0.4的使用
- ios 开发中遇到的问题总结以及解决方法
- ios 开发中遇到的问题总结以及解决方法
- 更新Xcode8遇到的一些问题总结
- iOS开发之网络编程:AFNetworking3.0使用简介
- iOS开发之最近开发遇到的问题总结
- Bugly热更新集成,以及遇到的问题
- ios开发遇到的一些问题0228
- ios 开发中遇到的一些问题
- 支付宝支付集成以及遇到的问题ios
- (持续更新)日积月累——iOS开发过程中遇到的一些小问题
- CDH5.3.x安装准备工作以及遇到的一些问题
- 总结一些常用web开发遇到的小问题及技巧。(不定时更新)
- iOS开发第三方框架之AFNetworking3.0的使用
- [HAXE] haxe接入IOS版FacebookSdK以及iOS开发遇到的问题总结(一)
- 日常开发——Android请求自定义证书的https
- Web - HTTPS
- java入门教程-3.1Java类的定义及其实例化
- HIVESQL中row_number使用
- linux 下连接mysql服务器
- iOS开发之适配IPV6更新网络处理为AFNetworking3.x, 集成以及遇到的一些问题总结。
- RecyclerView滑动停止加载图片,空闲时间加载图片
- Linux磁盘操作工具归纳……转载的,也不知道出处
- apache配置伪静态实例 重写技术
- Struts2_Action的配置
- 网易视频云直播常见问题解析
- 手把手教你使用Git
- 简单使用CocoaPods
- 数据库经验整理