1、网络访问的步骤
1> 建立NSURL
2> 建立NSURLRequest
3> 建立NSURLConnection
4> 开始连接
1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 5 // url 6 NSURL *url = [NSURL URLWithString:@"www.baidu.com"]; 7 8 // request 9 NSURLRequest *request = [NSURLRequest requestWithURL:url]; 10 11 // connection 12 NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; 13 14 // start 15 [connection start]; 16 }
……
5> 通过代理NSURLConnectionDataDelegate方法处理网络请求的数据
(1) 服务器响应,表示服务器处理完成请求,准备给客户端发送数据
(2) 客户端接收数据,可能会有多次,因此需要借助成员变量拼接服务器返回的数据
(3) 数据接收完成,处理数据结果,并更新界面显示
(4) 网络访问出错,提示用户
以下代码会在debug区域打印从百度首页抓取的数据
1 #pragma mark - 网络代理方法 2 #pragma mark 1.知道服务器查询完毕,准备向客户端(我)发送数据 3 // response 响应、通知 4 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 5 { 6 // _serverData 成员变量,用于拼接时保存数据 7 _serverData = [NSMutableData data]; 8 } 9 10 #pragma mark 2. 接收数据(可能会重复多次,因为服务器返回的数据量可能会比较大),需要拼接以下服务器返回的数据 11 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 12 { 13 [_serverData appendData:data]; 14 } 15 16 #pragma mark 3. 处理接收完的数据,负责显示工作 17 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 18 { 19 // 接收完成的后续处理->字符串 20 NSString *result = [[NSString alloc] initWithData:_serverData encoding:NSUTF8StringEncoding]; 21 22 // html 23 NSLog(@"%@", result); 24 25 } 26 27 #pragma mark 4. 网络访问出错 28 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 29 { 30 NSLog(@"网络不给力 - %@", error.localizedDescription); 31 }
2. 应用模式
在两年前,此开发模式被广为流传
(1) 企业专门为了手机建立一个门户网站,使用HTML5PHPASP.net...
(2) 客户端只需要通过一个WebView即可访问
PhoneGap:能够创建跨平台的移动应用框架,主要实现的核心机制就是HTML5
使用WebView的方式最大的缺陷是用户体验不好,而且无法利用手机本身的很多交互方式,例如手势、加速计等
操作模式过于单薄,目前尚处于研究阶段。
3. 中文处理
在网络请求地址中,如果包含中文,需要将中文转换成带百分号的格式
4. NSData
是在OC中专门用于存储二级制数据的一种数据类型,可以存储任意类型的数据。
在实际开发中,可以根据具体的应用场景,将NSData转换为其他的类型。