一、网路请求的步骤:
1.确定地址NSURL
2.建立NSURLRequest
3.建立并启动连接NSURLConnection
通过代理方法处理网络请求
遵守协议:NSURLConnectionDataDelegate
二、网路代理方法
1.接受呆服务器的响应,服务器要传数据,客户端做接收准备
2.接收服务器传输的数据,可能会多次执行
3.接收数据完成,做后续处理
4.服务器请求失败,原因很多(网路环境等等)
5.向服务器发送数据,此方法经适用于POST,尤其上传文件
三、GET方法
在NSURL中指定参数(如果有,就可以不指定参数),例如:http://www.baidu.com
四、POST方法
定义一个可变的URLMutableRequest
1)时长
[request setTimeOutInterVal:2.0f];
2)请求方式(默认是GET)
[request setHTTPMethod:@"POST"];
3)数据体
NSData *body = [string dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:body];
五、同步方法--必须要摸个网路请求完成后,才能后续执行,例如网银登陆
看到方法参数中包含__autoreleasing字样,在定义对象名前面加上"&"
NSURLResponse *response = nil;
NSError *error = nil;
同步操作没用完成,后面的代码不会执行
NSData *data = [NSURLConnecion sendSynchronousRequest:request returningResponse:&response error:&error];
1>接受到数据,表示工作正常
2>没有接受到数据,但是error为nil,表示接收到空数据
通常服务器没有对该请求做任何响应
3>error不为空,表示请求出错
六、异步方法
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *reponse, NSData *data, NSError *error) {
// 请求完成后的处理
}];
异步方法不用等待网路请求结束
七、NSURLRequest
使用以下实例化方法,可以在实例化的同时指定请求超时时长。
1.url
2.缓存策略 默认是NSURLRequestUseProtocolCachePolicy
3.超时时长
NSURLRequest *rq = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];