ios开发之网络基础
1、网络访问的步骤
1> 建立NSURL
2> 建立NSURLRequest
3> 建立NSURLConnection
4> 开始连接
- (void)viewDidLoad
{
[super viewDidLoad]; // url
NSURL *url = [NSURL URLWithString:@"www.baidu.com"]; // request
NSURLRequest *request = [NSURLRequest requestWithURL:url]; // connection
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; // start
[connection start];
}
……
5> 通过代理NSURLConnectionDataDelegate方法处理网络请求的数据
(1) 服务器响应,表示服务器处理完成请求,准备给客户端发送数据
(2) 客户端接收数据,可能会有多次,因此需要借助成员变量拼接服务器返回的数据
(3) 数据接收完成,处理数据结果,并更新界面显示
(4) 网络访问出错,提示用户
以下代码会在debug区域打印从百度首页抓取的数据
#pragma mark - 网络代理方法
#pragma mark 1.知道服务器查询完毕,准备向客户端(我)发送数据
// response 响应、通知
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
// _serverData 成员变量,用于拼接时保存数据
_serverData = [NSMutableData data];
} #pragma mark 2. 接收数据(可能会重复多次,因为服务器返回的数据量可能会比较大),需要拼接以下服务器返回的数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_serverData appendData:data];
} #pragma mark 3. 处理接收完的数据,负责显示工作
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// 接收完成的后续处理->字符串
NSString *result = [[NSString alloc] initWithData:_serverData encoding:NSUTF8StringEncoding]; // html
NSLog(@"%@", result); } #pragma mark 4. 网络访问出错
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"网络不给力 - %@", error.localizedDescription);
}
2. 应用模式
在两年前,此开发模式被广为流传
(1) 企业专门为了手机建立一个门户网站,使用HTML5\PHP\ASP.net...
(2) 客户端只需要通过一个WebView即可访问
PhoneGap:能够创建跨平台的移动应用框架,主要实现的核心机制就是HTML5
使用WebView的方式最大的缺陷是用户体验不好,而且无法利用手机本身的很多交互方式,例如手势、加速计等
操作模式过于单薄,目前尚处于研究阶段。
3. 中文处理
在网络请求地址中,如果包含中文,需要将中文转换成带百分号的格式
4. NSData
是在OC中专门用于存储二级制数据的一种数据类型,可以存储任意类型的数据。
在实际开发中,可以根据具体的应用场景,将NSData转换为其他的类型。
ios开发之网络基础的更多相关文章
- iOS开发之网络编程--2、NSURLSessionDownloadTask文件下载
本文内容大纲: 1.回顾NSURLSessionTask 2.NSURLSessionDownloadTask大文件之block下载 3.NSURLSessionDownloadTask大文件之代理方 ...
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传. 在实际开发中,输入输出流用的比较少,但 ...
- iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传
前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
前言:根据前篇<iOS开发之网络编程--2.NSURLSessionDownloadTask文件下载>或者<iOS开发之网络编程--3.NSURLSessionDataTask实现文 ...
- iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)
前言:使用NSURLSessionDownloadTask满足不这个需要离线断点续传的下载需求,所以这里就需要使用NSURLSessionDataTask的代理方法来处理下载大文件,并且实现离线断点续 ...
- iOS开发之网络编程--使用NSURLConnection实现文件上传
前言:使用NSURLConnection实现文件上传有点繁琐. 本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...
- iOS开发之网络编程--使用NSURLConnection实现大文件下载
主要思路(实现下载数据分段写入缓存中) 1.使用NSURLConnectionDataDelegate以及代理方法.2.在成功获取响应的代理方法中,获得沙盒全路径,并在该路径下创建空文件和文件句柄.3 ...
- iOS开发之网络编程--小文件下载
文件下载方式: 如果下载的文件比较小,下载方式: 直接用NSData的 +(id)dataWithContentsOfURL:(NSURL*)url; 利用NSURLConnection发送一个HTT ...
- IOS开发之网络开发工具
IOS开发之网络开发工具 做移动端开发 常常会涉及到几个模块:1.网络检測 2.网络请求get和post请求 3.文件上传 4.文件下载 5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...
随机推荐
- C 【block类型全方位详解】
------------------------------------------- block变量的概念 #import <Foundation/Foundation.h> int m ...
- dropdownlist值改变时调用js
DropDownList的OnSelectedIndexChanged方法是服务器端方法如要用需要设置AutoPostBack选项为true,并且在服务器后台写方法 要调用js方法需要onchange ...
- 20150313--AJAX
from,提交信息,抛弃当前页面,并刷新页面. AJAX,从当前页面获取信息,并提交.反馈信息,不会抛弃页面. 例: 用户注册时,验证用户名是否已存在, 创建两个标准控件:TextBox1,Label ...
- [翻译.每月一译.每日一段]Exploring Fonts with DirectWrite and Modern C++
Windows with C++ Exploring Fonts with DirectWrite and Modern C++ Kenny Kerr DirectWrite is an incred ...
- 腾讯云 安全组配置及与MySQL 远程登录失败原因浅析
前言,知道自己腾讯云服务器安全组配置并在安全组里开放了所有端口的用户可以粗略的看看下边的内容,否则就仔细看看吧. 因为有学习及业务需要,我要在腾讯云上安装了CentOS7.2版本的服务器上安装MySQ ...
- sql server 查询多个不关联表且对结果编号
1.除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.子查询和公用表表达式中无效. 解决方法:top 100 percent * 2.如何对查询结果编 ...
- windows bat脚本实现ftp自动下载 删除
现在有一个需求就是把远程某个文件下面的图片,下载到本地,并且删除下载成功的的文件,而且远程目录下的那个图片会随时增加.假设一下如果所有的脚本都写好了,那么就需要调用windows上的计划任务定时执行脚 ...
- tomcat6.0 数据库连接池配置问题
tomcat6.0 数据库连接池配置问题: 连接池配好后,启动tomat后,输入项目系统的登录名和密码,报 Cannot create JDBC driver of class '' for conn ...
- python 内置模块之hashlib、hmac、uuid
一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...
- itertools模块速查
学习itertools模块记住这张表就OK了 参考:http://docs.python.org/2/library/itertools.html#module-itertools Infinite ...