/********访问网络同步请求、异步请求基本概念********/
//  访问网络的基本概念
访问网络方式:
同步请求 : 主线程执行 , 请求无法取消, 无法坚挺加载进度
异步请求 : 多线程执行 , 请求可以取消, 可以监听//  访问网络的基本流程:(简略说明)
构造NSURL实例(地址)
生成NSURLRequest请求
通过NSURLConnection发送请求
通过返回NSURLRespond实例和NSError实例分析结果
接受返回数据//  NSURL释义与常用方法
NSURL实例包装了一个地址信息,可以是本地地址,也可以是远程地址
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];/********NSURLRequest的使用********/
//  NSURLRequest的使用
NSURLRequest包装了网络请求的信息。
NSURLRequest *request = [NSURLRequest requestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
NSURLRequestUseProtocolCachePolicy参考-> //
http://www.cnblogs.com/pengyingh/articles/2343083.html//  NSMutableRequest的使用
相对于NSRequest,可以对请求信息重新设置
示例:
NSMutableRequest *request [[NSMutableRequest alloc]init];
[request setURL:url];
//  设置请求方式get/post
[request setHTTPMethod:@"POST"];
//  设置超时时间
[request setTimeoutInterval:60];
//  设置请求参数
[request setHTTPBody:_data];
//  设置请求头
[request setValue:@"tttt" forHTTPHeaderField:@"cookes"];/********同步请求用法********/
//构造url
NSURL *url = [NSURL URLWithString:@"http://www.iphonetrain.com"];
//创建一个请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//响应
NSURLResponse *response;
//发送同步请求,请求成功后返回数据
NSData *resultData = [NSURLConnection sendSynchronousRequest:requestreturningResponse:&responseerror:nil];
//  -------data转化为string------
NSString *dataString = [[NSString alloc]initWithData:resultDataencoding:NSUTF8StringEncoding];/********异步请求用法********/
//  第一种方式(代理方式)
//发送异步请求
[NSURLConnection connectionWithRequest:request delegate:self];
//delegate  接受加载的数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{[_data appendData:data];
}
//delegate  数据加载完后调用
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {NSString *dataString = [[NSString alloc]initWithData:_dataencoding:NSUTF8StringEncoding];
}
//  第二种方式(开辟一个子线程,结合创建多线程的多种方式)
//启动一个新的线程加载数据
[self performSelectorInBackground:@selector(loadData) withObject:nil];
//loadData发送同步请求(发送一个普通的请求)
- (void)loadData {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];NSURL *url = [NSURL URLWithString:request_url];NSURLRequest *request = [NSURLRequest requestWithURL:url];//发送同步请求,获取数据dataNSData *data = [NSURLConnection sendSynchronousRequest:requestreturningResponse:&responseerror:nil];//回到主线程调用方法
    [self performSelectorOnMainThread:@selector(afterLoadData)withObject:stringDatawaitUntiDone:NO]; // 直到子线程任务完成
    [pool release];
}/********取消异步请求********/
//发送cancel取消请求,同步请求无法取消。
//取消请求后,网络请求会按失败处理,会调用失败的代理
[request cancel];

转载于:https://www.cnblogs.com/needly/p/3401040.html

NSURLConnection-网络访问(同步异步)相关推荐

  1. OPC的数据访问方法分别有同步访问、异步访问和订阅式

    OPC的数据访问方法分别有同步访问.异步访问和订阅式数据采集方式三种. 1 同步数据访问方式 OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序 ...

  2. 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?

    本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...

  3. Java网络编程------IO模型的同步/异步/阻塞/非阻塞(1)

    IO模型的同步/异步/阻塞/非阻塞 一.同步/异步/阻塞/非阻塞 1.同步和异步 2.阻塞和非阻塞 3.同步.异步和阻塞.非阻塞组合 二.IO 1.I/O 2.阻塞IO和非阻塞IO 3.同步IO和同步 ...

  4. 网络编程 多道技术与同步/异步和阻塞/非阻塞

    UDP协议服务端模板代码 import socketserver = socket.socket(type=socket.SOCK_DGRAM) # 创建socket对象,括号内选择类型为UDPser ...

  5. 刷机后连接上wifi提示网络访问受限时间不同步问题解决方法小米8刷魔趣WIFI无法联网解决方法

    安全提示:操作前,请确保自己的手机已经解锁,不然分区加密状态下,如法写入数据,也就无法保证刷入成功. 手里闲置一台小米8,性能配置,大小手感都还不错,所以一直留着.闲着无事拿出来折腾一下,刷个魔趣系统 ...

  6. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?

    本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...

  7. Android—OkHttp同步异步请求过程源码分析与拦截器

    OkHttp同步请求步骤: 创建OkHttpClient,客户对象 创建Request,请求主体,在请求主体设置请求的url,超时时间等 用newCall(request)将Reuqest对象封装成C ...

  8. C#.net同步异步SOCKET通讯和多线程总结(转)

    C#.net同步异步SOCKET通讯和多线程总结 来源:http://www.cnblogs.com/Silverlight_Team/archive/2009/03/13/1411136.html ...

  9. setState同步异步场景

    setState同步异步场景 React通过this.state来访问state,通过this.setState()方法来更新state,当this.setState()方法被调用的时候,React会 ...

最新文章

  1. Python API vs C++ API of TensorRT
  2. mysql 5.6 初始化_MySQL 5.6 关于登陆的初始化设置
  3. 【PAT乙级】1055 集体照 (25 分)
  4. 在Oracle Coherence中分发Spring Bean
  5. 安装后jdk1.8 配置环境变量以后 版本显示还是1.7
  6. DevExpress v15.1:XAF控件升级
  7. 记一次 Redis Cluster 宕机引发的事故
  8. 解决问题__max 模型白色 材质球换没用
  9. 不能算是读后感的读后感
  10. Redis 6.0 源码阅读笔记(10) -- 主从复制 Master 节点流程分析
  11. Oracle数据库的ORA-00257故障解决过程(转载)
  12. qq pc9.4协议机器人框架源码
  13. 弱监督学习和小目标检测
  14. spring mvc 扫描与注解
  15. 电商运营数据分析常用分析指标--概述及流量指标
  16. “你没有权限操作该项”phpcms权限解决一例
  17. Deployer php自动部署,简单轻松部署你的项目 - Deployer
  18. 电机qudong电路
  19. 树莓派4通过华为ME909S 4G模块连接蜂窝网(非PPP)
  20. 千川数据返回值解析(AES)解密

热门文章

  1. 在Module中使用自定义过滤器,来统一对站内所有请求响应的输出内容进行采集或更改。...
  2. 好用的chrome插件总结
  3. LeetCode(892)——三维形体的表面积(JavaScript)
  4. CCF CSP201312-4有趣的数
  5. 50mm定焦,f1.8与1.4有什么不同?
  6. 事业编待遇怎么样?考入事业编的分享一下吧?
  7. 那些从小不干活的人,不做家务,不做饭的人后来怎么样了呀?
  8. 你有什么难忘的出差经历?
  9. 为什么日本人晚上那么晚去居酒屋吃炸鸡喝啤酒,但街上却鲜有胖子?
  10. 厦门GDP超过万亿需要多少年时间?