首先说明一下我的使用场景:

  • 在请求数据时,因为业务逻辑的关系,需要数据先回来才能下一步
  • 因为是自己搭建的测试服务器,测试环境是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证书的问题,请另行查阅。以上只是个人的一点点见解,不喜勿喷,写得不是很详细,可能有错误或者漏洞,恳请大神斧正。

AFNetWorking3.0 实现同步请求相关推荐

  1. iOS 中的网络请求 (同步请求、异步请求、GET请求、POST请求)

    1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...

  2. Servlet学习DAY_02:重定向/ 文件上传/ Cookie和Session/ 导入一个工程 / 配置欢迎页面 / 同步请求和异步请求/JSON和AJax介绍 /过滤器

    重定向 重定向是服务器告诉客户端往指定的路径再次发出请求的指令 执行过程: 当服务器执行重定向方法时会给客户端返回302状态码和一个请求路径,浏览器接收到302后会立即往指定的路径再次发出请求 res ...

  3. 基于AFNetworking3.0网络封装

    概述 对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口.很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了. 对于 ...

  4. 【转载】基于AFNetWorking3.0的图片缓存分析

    原文出处:Yasin的简书 http://www.jianshu.com/p/b1045c3fc8d0 图片在APP中占有重要的角色,对图片做好缓存是重要的一项工作. [TOC] 理论 不喜欢理论的可 ...

  5. Ajax(异步请求)和传统(同步请求)区别

    在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 accept  t ...

  6. Okhttp同步请求源码分析

    进阶android,OKhttp源码分析--同步请求的源码分析 OKhttp是我们经常用到的框架,作为开发者们,我们不单单要学会灵活使用,还要知道他的源码是如何设计的. 今天我们来分析一下OKhttp ...

  7. Http中的同步请求和异步请求

    最近在上springmvc的JSON数据交换的时候,老师下课提了一个课后问题:什么是异步请求?什么是同步请求?我想大部分同学听到这个问题的时候应该和我一样不知所云.现在,给大家分享一篇关于同步请求和异 ...

  8. iOS开发-Get请求,Post请求,同步请求和异步请求

    标题中的Get和Post是请求的两种方式,同步和异步属于实现的方法,Get方式有同步和异步两种方法,Post同理也有两种.稍微有点Web知识的,对Get和Post应该不会陌生,常说的请求处理响应,基本 ...

  9. php和ajax的同步和异步请求,ajax 同步请求和异步请求的差异分析_javascript技巧

    ajax同步和异步的差异, 先看2段代码: 代码一: Synchronize = function(url,param) { function createXhrObject() { var http ...

最新文章

  1. Nginx防盗链详细设置
  2. python二十一:文件操作
  3. 【小白学习PyTorch教程】三、Pytorch中的NN模块并实现第一个神经网络模型
  4. 如何解决连接不上us.archive.ubuntu.com
  5. 从零开始学JavaScript三(变量)
  6. 资源分享 | 网易云课堂价值 399 的 office 三合一自学教程
  7. 科学计算机怎么直接显示10的多少次方,科学计算器怎么开n次方
  8. 使用Silvaco设计构建NMOS晶体管、PNP、NPN双极型晶体管并提取各项工艺及器件参数:半导体器件和工艺模拟
  9. 【路径规划】A*三维全局路径规划(附Python实现源码)
  10. 白酒分化明显,中小酒企面临生存困境
  11. ipfs add命令
  12. 四旋翼飞行器教学笔记2 —— 飞行器de姿态读取 1
  13. python必背100源代码下载-100行Python代码实现一款高精度免费OCR工具
  14. 关于@Value读不到配置文件内容的问题
  15. TCP/IP协议:最大传输单元MTU 路径MTU
  16. [AHOI2022]山河重整
  17. 一种基于子序列的亚细胞定位预测的深度学习框架(DeepLncLoc: a deep learning frame work for long non-coding RNA subcellular)
  18. ODCC开放数据中心峰会即将召开 十道“技术大餐”提前揭秘
  19. 信号处理:<三> DFT和FFT
  20. <linux> busybox制作rootfs

热门文章

  1. 10、刷牛客网SQL题(四)
  2. 牛客练习赛52 BGalahad 树状数组
  3. 学javaweb要先学java吗_怎么入门Java Web,我应该先学什么?
  4. 时间字符串转Timestamp时间戳
  5. 接口和抽象类的区别是什么?抽象类必须要有抽象方法吗?抽象类能使用 final 修饰吗?
  6. 编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、数学课(Math)和平均值(avg),方法包括求三门课的平
  7. WiFi基本概念(十三)射频(一)(EVM)
  8. 必备模块知识——继电器
  9. 分享一款好用的ssh工具
  10. /var/ha/soc/hagsdsocket./cdrom/rootpre.sh[338]: /usr/lpp/ssp/bin/spget_syspar