AFNetWorking3.0 实现同步请求
2016-12-20 15:34
253 查看
首先说明一下我的使用场景:
在请求数据时,因为业务逻辑的关系,需要数据先回来才能下一步
因为是自己搭建的测试服务器,测试环境是http,但是苹果对http使用是有限制的,我需要暂时不做ssl证书的验证
好,下面来说一下实现方式:
一开始,我是用官方的API来实现同步请求的,
但是,这样子有个问题,如果是http的请求,会报错。
如果是异步请求,要解决这个报错的问题,需要监听NSURLConnectionDelegate代理方法,但是同步请求是设置不了代理来监听的,所以只能换NSURLSessionTask了。这里又有一个问题,它是没有同步请求,只能是发起异步请求,最后决定用信号量来控制:
关于如何忽略Https证书的问题,请另行查阅。以上只是个人的一点点见解,不喜勿喷,写得不是很详细,可能有错误或者漏洞,恳请大神斧正。
在请求数据时,因为业务逻辑的关系,需要数据先回来才能下一步
因为是自己搭建的测试服务器,测试环境是http,但是苹果对http使用是有限制的,我需要暂时不做ssl证书的验证
好,下面来说一下实现方式:
一开始,我是用官方的API来实现同步请求的,
NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
但是,这样子有个问题,如果是http的请求,会报错。
如果是异步请求,要解决这个报错的问题,需要监听NSURLConnectionDelegate代理方法,但是同步请求是设置不了代理来监听的,所以只能换NSURLSessionTask了。这里又有一个问题,它是没有同步请求,只能是发起异步请求,最后决定用信号量来控制:
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); //创建信号量 NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]]; NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (!error) { //请求失败 }else{ //请求成功 } dispatch_semaphore_signal(semaphore);//不管请求状态是什么,都得发送信号,否则会一直卡着进程 }]; [task resume]; dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER); //等待
关于如何忽略Https证书的问题,请另行查阅。以上只是个人的一点点见解,不喜勿喷,写得不是很详细,可能有错误或者漏洞,恳请大神斧正。
相关文章推荐
- 解决 Ext.Ajax.request 同步请求实现问题 (Ext3.0)
- Ext同步请求实现
- ios 同步Get请求的实现
- ios网络学习------2 用非代理方法实现同步post请求
- http同步请求的实现
- EXT3.0实现的同步请求
- ExtJS实现同步请求
- ios网络学习------2 用非代理方法实现同步post请求
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- Jquery实现Ajax同步请求
- Ext 2.2-2.3 Ext.ajax.request 同步请求的实现
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- ios 同步Get请求的实现
- ios 同步Get请求的实现 分类: ios开发 2015-01-30 17:36 362人阅读 评论(0) 收藏
- javascript原生态的同步异步请求实现
- async : false 配置实现异步请求同步
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- JQuery.extend扩展实现同步post请求
- Android 蓝牙4.0 BLE 开发之请求同步实现篇 完全解析