一、网络访问的四个步骤

l 第一步:确定地址URL

l 第二步:建立请求

l 第三步:建立并启动连接

l 第四步:连接完成,处理结果

备注:URL,统一资源定位符(URL,英语Uniform Resource Locator的缩写)也被称为网页地址,是因特网上标准的资源的地址。iOS中资源地址一般都是使用NSURL描述的,包括:网页、本地文件、音频、视频、电话、短信等

二、iOS网络处理常用类

l NSURL(地址)

请求地址

l NSURLRequest(请求,GET请求使用)

保存需要传送给Web服务器的全部数据:

一个NSURL对象

缓存策略

等待Web服务器响应的最长时间

请求头(在iOS开发中,系统已经自动处理,程序员不需要考虑)

请求体

l NSMutableURLRequest(可变请求,POST请求使用)

NSURLRequest的可修改子类

l NSURLConnection(连接)

负责创建客户端和Web服务器之间的网络连接、发送NSURLRequest对象中的数据并收集来自服务器的响应

三、NSURLConnectionDataDelegate的常用代理方法

之所以使用代理方法,是因为要处理请求返回的结果!

// 服务器开始返回数据

(void)connection:didReceiveResponse:

// 收到服务器返回的数据,本方法会被调用多次

- (void)connection:didReceiveData:

// 数据接收完毕,做数据的最后处理

(void)connectionDidFinishLoading:

// 网络连接错误

- (void)connection:didFailWithError:

// 发送数据给服务器,POST 请求使用此方法

- (void)connection:didSendBodyData:totalBytesWritten: totalBytesExpectedToWrite:

四、网络请求之 GET vs POST

有两种常用的方法把数据提交给服务器:GET和POST

l GET

GET的语义是获取指定URL上的资源

将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,各个变量之间使用“&”连接

不安全,因为在传输过程中,数据被放在请求的URL中

传输的数据量小,这主要是因为受URL长度限制

l POST

POST的语意是对指定资源“追加/添加”数据

将数据放在数据体中,按照变量和值相对应的方式,传递到action所指向URL

所有数据对用户来说不可见

可以传输大量数据,上传文件只能使用Post

五、NSURLConnectionDataDelegate数据代理方法回顾

开始接收

接收数据

完成接收

出现错误

如果是POST请求,发送数据,通常用于上传文件

六、关于代理方法

l 代理方法存在的问题

代理方法较多,比较分散

要处理一个请求,需要在很多地方编写代码

不利于逻辑实现、代码编写、调试、维护以及扩展

尤其当存在多个请求时会变得非常麻烦!

l 已经学习过的代理方法

UIApplicationDelegate

UITableViewDelegate、UITableViewDataSource

UITextFieldDelegate

通过协议自定义代理方法

NSURLConnectionDataDelegate

七、同步请求和异步请求

l NSURLConnection提供了两个静态方法可以直接同步或异步调用NSURLRequest,而无需通过NSURLConnectionDataDelegate获取数据

l 同步请求:

sendSynchronousRequest:request returningResponse:&response error:&error

l 异步请求:

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

八、缓存策略

l NSURLRequest的cachePolicy属性可以设置缓存策略,这是一种内存缓存,非硬盘缓存

l 使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,使程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求

l cachePolicy支持的缓存策略包括:

NSURLRequestUseProtocolCachePolicy 默认的缓存策略,要在协议的实现方法中指定缓存逻辑

NSURLRequestReloadIgnoringCacheData 忽略缓存从原始地址下载

NSURLRequestReturnCacheDataElseLoad 没有缓存时从原始地址下载

NSURLRequestReturnCacheDataDontLoad 只使用缓存,如果不存在缓存,请求失败,适用于没有建立网络连接离线模式

NSURLRequestReloadIgnoringLocalAndRemoteCacheData 忽略本地和远程的缓存数据,直接从原始地址下载,与NSURLRequestReloadIgnoringCacheData类似

NSURLRequestReloadRevalidatingCacheData 验证本地数据与远程数据是否相同,如果不同则下载远程数据,否则使用本地数据

九、本地数据存储的原则

l 与安全相关的用户信息(明文)

用户密码

银行账号

l 原则:

任何应用程序都不能在本地直接存储与安全相关的用户信息

任何应用程序在于服务器传递数据时,都不能直接传输与安全相关的用户信息

十、数据安全——MD5

l Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321

l MD5用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现

l MD5的典型应用是对一段字节串产生指纹,以防止被“篡改”。例如,可以对一个readme.txt生成一个MD5的值并记录在案,如果其他人修改了文件中的任何内容,对该文件重新计算的MD5值会发生变化

l MD5还广泛用于操作系统的登录认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方面

十一、SHA-1简介

l SHA (Secure Hash Algorithm,译作安全散列算法) 由美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数

l SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512都被需要安全散列算法的美国联邦政府所应用,他们也使用其他的密码算法和协定来保护敏感的未保密资料

l SHA-1散列函数用可能会被用来实现个人电脑上的数字版权的管理

iOS基础 - iOS网络基础的更多相关文章

  1. 网络编程基础:网络基础之网络协议、socket模块

    操作系统(简称OS)基础: 应用软件不能直接操作硬件,能直接操作硬件的只有操作系统:所以,应用软件可以通过操作系统来间接操作硬件 网络基础之网络协议: 网络通讯原理: 连接两台计算机之间的Intern ...

  2. ios开发之网络基础

    1.网络访问的步骤 1> 建立NSURL 2> 建立NSURLRequest 3> 建立NSURLConnection 4> 开始连接 - (void)viewDidLoad ...

  3. linux基础之网络基础配置

    基础命令:ifconfig/route/netstat,ip/ss,nmcli 一.ifconfig/route/netstat相关命令 1.  ifconfig - configure a netw ...

  4. python基础之网络基础

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  5. Java基础教程——网络基础知识

    参考阅读[中国互联网发展史]:https://zhuanlan.zhihu.com/p/61602252 协议 计算机网络中的通信必须有一些约定,这些约定称为"通信协议". 通信协 ...

  6. linux基础三---网络基础&软件包管理

    一 ifconfig:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址. ifconfig eno16777736 down/up   关闭/开启 eno16777736 网卡 ifconf ...

  7. Nmap扫描教程之网络基础服务DHCP服务类

    Nmap扫描教程之网络基础服务DHCP服务类 Nmap网络基础服务 网络基础服务是网络正常工作的基石,常见的网络基础服务包括DHCP服务和DNS服务.其中,DHCP服务用来为计算机动态分配IP地址:D ...

  8. iOS网络基础知识

    iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ...

  9. iOS网络基础---iOS-Apple苹果官方文档翻译

    CHENYILONG Blog iOS网络基础---iOS-Apple苹果官方文档翻译 iOS网络基础 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http: ...

  10. iOS 9应用开发基础教程下册

    iOS 9应用开发基础教程下册   介绍: 本教程是国内第一本iOS 9开发应用教程.本教程基于Xcode 7.0,使用Swift 2.0语言讲解如何开发iOS 9的应用App. 学习建议:本教程针对 ...

随机推荐

  1. Javascript学习8 - 脚本化文档(Document对象)

    原文:Javascript学习8 - 脚本化文档(Document对象) 每个Web浏览器窗口(或帧)显示一个HTML文档,表示这个窗口的Window对象有一个document属性,它引用了一个Doc ...

  2. [Error]EOL while scanning string literal

    有一个经常性的工作项目.需要一天的一些表数据到外部接口,但最近总是异常.今天检查的原因. 第一本地和测试环境中测试程序是没有问题,有网络环境只会在日志中抛出一个异常.产生主要的例外是推定异常数据. , ...

  3. 140724夏训.txt

    1.同余定理    (a+b)%c==(a%c+b%c)%c    (a*b)%c==[(a%c)*(b%c)]%c          由于有的数在int范围内,可是两个的乘积却超过了int范围,这样 ...

  4. .NET中IDisposable接口的基本使用

    首先来看MSDN中关于这个接口的说明: [ComVisible(true)] public interface IDisposable { // Methods void Dispose(); } 1 ...

  5. string.format大全

    字符串的数字格式 stringstr1 =string.Format("{0:N1}",56789);               //result: 56,789.0 strin ...

  6. GDI+学问------ 绘制可变角度的色彩渐变效果

    GDI+ 它是GDI(Windows 图形设备接口提供的早期版本)也许是版本号,它是Microsoft Windows XP作系统即兴许版本号的图形显示技术. 它已经集成到了.Net开发环境中.所以无 ...

  7. 【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

    原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2. ...

  8. div中显示某个网页

    原文:div中显示某个网页 1.<iframe>方法 2.ajax方法 ajax+流实现无框架限制块刷新: 主框架index页面: js: $(function(){ $("#d ...

  9. Struts2.0+Spring3+Hibernate3(SSH~Demo)

    Struts2.0+Spring3+Hibernate3(SSH~Demo) 前言:整理一些集成框架,发现网上都是一些半成品,都是共享一部分出来(确实让人很纠结),这是整理了一份SSH的测试案例,完全 ...

  10. CSS3+HTML5特效2 - 翻转效果

    先看效果,鼠标移上去看看. back front 1. 本实例需要以下元素 a. 容器BOX b. 默认显示元素FRONT c. 翻转显示元素BACK 2. 容器BOX的Height为200px,Wi ...