1.URL
确定要访问的资源路径
2.请求
1.基于URL建立请求
2.设置请求属性:缓存策略,网络超时时长。
3.告诉服务器额外信息:客户端类型,身份验证。
// 告诉服务器,客户端的类型是 iPhone,而且支持 AppleWebKit
[request setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15.0];
缓存策略
枚举 | 数值 | 说明 |
---|---|---|
NSURLRequestUseProtocolCachePolicy | 0 | 默认的缓存策略 |
NSURLRequestReloadIgnoringLocalCacheData | 1 |
|
NSURLRequestReturnCacheDataElseLoad | 2 | 如果有缓存,就返回缓存,否则加载数据 |
NSURLRequestReturnCacheDataDontLoad | 3 | 如果有缓存,就返回缓存,否则不加载 |
1.默认网络时长是60s
2.建议超时时长 15~30秒之间
3.注意超时时长不能太短
4.SDWebImage的默认超时时长是15秒
5.AFN的默认超时时长是60秒
发送异步请求
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// 标准的错误处理方法
if (connectionError || data == nil) {
NSLog(@"网络不给力!");
return;
}
NSLog(@"--> %@", [NSThread currentThread]);
}];
NSLog(@"----");参数:
1.request请求
2.queue调度回调方法的队列
主队列:回调方法在主线程执行
自定义队列:回调方法在异步执行
队列的选择:
如果获得数据,直接更新UI,使用主队列。
如果获得数据,仍然需要做耗时的操作,例如解压缩,则使用自定义队列。
3.completionHandler 网络访问完成的回调
回调方法的参数
1.response 服务器响应,通常仅在开发,下载功能时才会用到。
2.data 服务器返回的二进制数据
数据实体,是程序员最关心的
3.connectionError 网络链接错误
网络开发中一定要处理链接错误
响应属性 | 说明 |
---|---|
URL | 服务器反馈的 URL,有的时候,服务器会重定向新的 URL |
MIMEType |
|
statusCode | 状态码
|
expectedContentLength | 数据长度,下载文件总长度 |
suggestedFilename | 建议的文件名 |
// 标准的错误处理方法
if (connectionError || data == nil) {
NSLog(@"您的网络不给力!");
return;
}