1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,

2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行

3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节;

4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。

1、     同步GET请求//第一步,创建URL
 NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];//第二步,通过URL创建网络请求
 NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];//NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
 其中缓存协议是个枚举类型包含:NSURLRequestUseProtocolCachePolicy(基础策略)NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)//第三步,连接服务器
 NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];NSLog(@"%@",str);2、同步POST请求//第一步,创建URL
 NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];//第二步,创建请求
 NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];[request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
 NSString *str = @"type=focus-c";//设置参数
 NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];[request setHTTPBody:data];//第三步,连接服务器
 NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];NSLog(@"%@",str1);
3、异步GET请求//第一步,创建url
 NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];//第二步,创建请求
 NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];//第三步,连接服务器
 NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
4、异步POST请求//第一步,创建url
 NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];//第二步,创建请求
 NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];[request setHTTPMethod:@"POST"];NSString *str = @"type=focus-c";NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];[request setHTTPBody:data];//第三步,连接服务器
 NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];5、异步请求的代理方法//接收到服务器回应的时候调用此方法- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;NSLog(@"%@",[res allHeaderFields]);self.receiveData = [NSMutableData data];}//接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{[self.receiveData appendData:data];}//数据传完之后调用此方法-(void)connectionDidFinishLoading:(NSURLConnection *)connection{NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];NSLog(@"%@",receiveStr);}//网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法-(void)connection:(NSURLConnection *)connectiondidFailWithError:(NSError *)error{NSLog(@"%@",[error localizedDescription]);

转:http://www.open-open.com/lib/view/open1355055986679.html

转载于:https://www.cnblogs.com/ygm900/p/4311737.html

IOS之同步请求、异步请求、GET请求、POST请求相关推荐

  1. iOS网络--同步,异步下载数据

    一. 这一节我们来学习几种下载数据的方式,目的在于学习同步,异步下载数据的知识. 二. 1.直接同步下载数据 //直接下载 同步下载 阻塞主线程 NSURL * url = [NSURL URLWit ...

  2. iOS GCD, 同步,异步,串行队列,并行队列,dispatch_group

    同步,指代码在同一个线程运行 异步,代码在另一个线程运行 串行队列,提交到该队列的block会顺序执行 并行队列,提交到该队列的block会并发执行 如果想等某一队列中所有block都执行完了在执行一 ...

  3. 一文读懂并发与并行,同步与异步阻塞

    并发与并行 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法, 实现用多个任务"一起"执行(实际上总有一些任务不在执行,因为切换任务的速度相当快, 看上去一起执行而 ...

  4. 同步与异步,回调与协程

    目录 概念上下文: 同步的方式: 异步加回调的方式: 异步协程方式: 总结: 这里分享一个 协程原理到实现,全局分析丨协程的切换与调度视频点击查看:「链接」 正文 本文主要介绍在网络请求中的同步与异步 ...

  5. iOS网络开发中的同步、异步和请求队列

    在iOS网络编程中,我们经常会遇到线程的同步和异步问题,同时为了对异步请求更加精准丰富的控制,我们还常常在iOS中使用请求队列,下面就来谈谈iOS开发中同步.异步以及请求队列的使用方法. 1. 同步意 ...

  6. iOS网络编程之同步、异步、请求队列

    1. 同步意为着线程阻塞,在主线程中使用此方法会不响应任何用户事件.所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替. - (IBAction)grabURL:(id)se ...

  7. http 请求 与其同步与异步请求的通透讲解

    http请求可以是基于webkit的浏览器或者web组件如:webview(在移动平台,android iOS等)发送的:也可以是任何程序或者代码段发出的:也可以这么说任何程序都可以自主发送http. ...

  8. OkHttpClient源码分析(一)—— 同步、异步请求分析和Dispatcher的任务调度

    OkHttpClient同步请求的执行流程和源码分析 同步请求示例 OkHttpClient okHttpClient = new OkHttpClient.Builder().readTimeout ...

  9. 【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

  10. 简述http请求中的同步和异步

    以http请求为例,同步请求就是指浏览器在处理完这个请求之前不能够接收其他请求; 异步请求就是指浏览器没处理完这个请求之前还可以接收用户的其他请求或者交互操作. http请求方式,分为GET与POST ...

最新文章

  1. 女程序猿2014总结(修改)
  2. Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Nacos
  3. java 类型推理_java 11 局部变量类型推断
  4. 存储计算解耦合,构建中国人英语语音数据库
  5. Java创建对象的方式——反序列化创建对象
  6. win7系统中出现“ 驱动器c中的卷没有标签...”的问题
  7. redis本地服务启动和桌面客户端安装(Windows)
  8. 密码学笔记—栅栏密码
  9. python123 测验6:组合数据类型
  10. 【项目】区块链在电商领域中的应用-草莓糖(CMT)(二)
  11. 自用机器学习笔记(1):什么是概率以及似然
  12. 齐聚一堂:共话网络安全人才培养新模式
  13. 智齿徐懿 | 一个“外行”眼中的呼叫中心系统未来
  14. iPhone全部设备分辨率速查
  15. echarts实现中国地图踩过的坑--------有些省的value可以拿到,有些省的value拿不到
  16. 教你文本聚类(参考http://www.kuqin.com/searchengine/20080511/8323.html)
  17. 蓝色箭头间隔css导航菜单代码
  18. 中国服务器连通状态,ppp服务器连通状态显示失败怎么办?
  19. Python实现文本替换
  20. 前端资料整理--持续更新中

热门文章

  1. 虚拟网卡与物理网卡TCP协议数据传输对比
  2. error LNK2019: 无法解析的外部符号 __imp__inet_ntoa@4
  3. Hibernate【XXXX.hbm.xml】总结
  4. Vue 组件库 HeyUI@1.19.0 发布,新增 Icon 图标
  5. 阿里巴巴Java“代码反潜机”P3C喜提首届中国优秀开源项目二等奖!
  6. C#把某个数组的一部分复制到另一个数组中的两种方法:Buffer.BlockCopy和Array.Copy...
  7. Eclipse 实用技巧
  8. 贪心,POJ(2709)
  9. sed 格式化输出df -h
  10. 一张图解释Linux的目录结构