访问网络的方式
同步请求:数据的请求在主线程来执行,一旦发送同步请求,程序将停止用户交户,直至服务器返回数据完成,才可以进行下一步操作,而网络数据加载需要一个时间过程,这样的话就会阻塞主线程。
异步请求:数据的请求过程在多线程执行。
其他区别:同步请求无法取消,异步请求过程中可以奇效,同步请假无法监听加载进度,异步可以监听
主要区别方式:
GET请求:将参数直接写在访问路径上,操作简单,但是容易被外界看到,安全性不高,而且有长度限制,地址最多255字节
POST请求:将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面不容易被捕获
基本流程:
构造NSURL实例(将需要请求的数据的网址字符串转化成NSURL对象)
生成NSURLRequest请求(一般用NSMutableURLRequest)
通过NSURLConnection发送请求
通过返回NSURLResponse实例和NSError实例分析结果
接受返回数据
// 初始化URL实例
NSURL * url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];
// http
NSLog(@"Scheme:%@",[url scheme]);
// www.baidu.com
NSLog(@"Host:%@",[url host]);
// 端口8080
NSLog(@"Port:%@",[url port]);
// http://www.baidu.com:8080/search?id=1
NSLog(@"absoluteString:%@",[url absoluteString]);
// /search
NSLog(@"relativePath:%@",[url relativePath]);
// /search
NSLog(@"Path:%@",[url path]);
// ("/",search )
NSLog(@"pathComponents:%@",[url pathComponents]);
// id=1
NSLog(@"Query:%@",[url query]);
@NSURLRequest 包装了网络请求的信息
NSURL * url = [NSURL URLWithString:urlString];
// 设置后不能改变
NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]