码迷,mamicode.com
首页 > Web开发 > 详细

step 2 NSURLConnection

时间:2016-01-01 22:52:06      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

NSURLConnection

步骤

  • NSURL:确定要访问的资源
  • NSURLRequest:根据 URL 建立请求,向服务器索要数据
  • NSURLConnection:建立网络连接,将请求(异步)发送给服务器

示例代码

// 1. `NSURL`:确定要访问的资源

NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];

 

// 2. `NSURLRequest`:根据 `URL` 建立请求,向服务器索要数据

NSURLRequest *request = [NSURLRequest requestWithURL:url];

 

// 3. `NSURLConnection`:建立网络连接,将请求(异步)发送给服务器

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

 

    NSLog(@"%@", data);

}];

NSURLConnection代码小结

sendAsynchronousRequest发送异步请求

1  此方法就是异步执行的,程序员无序考虑开启线程,或者创建队列

2  会将之前建立好的请求异步发送给服务器

3  等到接收到服务器响应后,由 queue 负责调度 completionHandler 的执行

队列

  • 调度 completionHandler 执行的队列

                        [[NSOperationQueue alloc] init],后台线程异步执行

                        [NSOperationQueue mainQueue],主线程异步执行

  • 队列的选择

                        如果要对数据进行耗时处理,例如:解压缩等,选择新建队列调度

                        如果只是做简单处理,立即更新 UI,选择主队列

completionHandler

  • 网络访问已经结束,接收到服务器响应数据后的回调方法
  • response,服务器的响应,通常在开发下载功能时才会使用

响应属性

说明

URL

服务器反馈的 URL,有的时候,服务器会重定向新的 URL

MIMEType

  • 服务器告诉客户端,返回的二进制数据的类型
  • ContentType
  • 根据 MIMEType 客户端就知道使用什么软件处理返回的二进制数据
  • 网络之所以这么丰富多彩,是因为有非常多的客户端软件

statusCode

状态码

  • 1XX消息
  • 2XX 成功
  • 3XX 更多选择
  • 4XX 客户端错误
  • 5XX 服务器错误

expectedContentLength

数据长度,下载文件总长度

suggestedFilename

建议的文件名

  • data 服务器返回的二进制数据,程序员最关心的内容
  • connectionError 连接错误,任何网络访问都有可能出现错误

// 标准的错误处理方法

if (connectionError || data == nil) {

    NSLog(@"网络不给力!");

    return;

}

请求简介

  • 基于 URL 建立请求
  • 设置请求属性:缓存策略,网络超时时长
  • 告诉服务器额外信息:客户端类型,身份验证...

// 告诉服务器,客户端的类型是 iPhone,而且支持 AppleWebKit

[request setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"];

step 2 NSURLConnection

标签:

原文地址:http://www.cnblogs.com/fakeCoder/p/5093750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!