美文网首页
iOS 网络的一些知识点总结

iOS 网络的一些知识点总结

作者: 倒影里浅笑 | 来源:发表于2017-04-14 11:52 被阅读58次

网络

移动网络应用=良好的UI+良好的用户体验+实时更新的数据

基本概念

客户端(Client):移动应用(iOS,Android等)

服务器(Server):为客户端提供服务、提供数据、提供资源的机器。

请求(Request):客户端向服务器索取数据的一种行为

响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端

服务器:按软件开发阶段可分为两种:

远程服务器[外网服务器、正式服务器]:是应用上线后使用的服务器,供全体用户使用,速度取决于服务器的性能、用户的网速

本地服务器[内网服务器、测试服务器]:应用处于开发、测试阶段使用的服务器,仅供公司内部的开发人员、测试人员使用;速度由于是局域网,故速度快,有助于提高开发测试效率。

URL[统一资源定位符]:

客户端如何找到想要链接的服务器:使用URL

通过1个URL,就能找到互联网上唯一的1个资源

URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL

URL的基本格式=协议://主机地址//路径

协议:不同的协议代表着不同的资源查找方式、资源传输方式

主机地址:存放资源的主机[服务器]的IP地址[域名]

路径:资源在主机中的具体位置

URL中常见协议

HTTP:超文本传输协议,访问的是远程的网络资源:http://

http协议是在网络开发中最常用的协议

file:访问的是本地计算机上的资源,file://(不用加主机地址)

mailto:访问的是电子邮件,mailto:

FTP:访问的是共享主机的文件资源,格式是ftp://

HTTP[Hypertext Transfer Protoclol]简介

访问远程网络资源最常用的协议。

HTTP作用:规定客户端和服务器之间的数据传输格式;让客户端和服务器能有效地进行数据沟通。

HTTP特点:协议简单、程序规模小、通信速度快

允许传输各种各样的数据

HTTP0.9和1.0使用非持续连接:现在每次连接只处理一个请求,服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间。

发送HTTP请求的方法

在HTTP/1.1协议中,定义了8种发送http请求的方法

GET、POST、 OPTIONS、 HEAD、 PUT、 DELETE、 TRACE、 CONNECT、 PATCH

根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式

PUT:增

DELETE:删

GET:查

POST:改

最常使用的是GET和POST(实际上GET和POST也能实现增、删、改、查)

使用GET和POST请求跟服务器进行交互,要了解的概念

参数:就是传递给服务器的具体数据,比如登录时的账号、密码

GET和POST的对比:区别主要表现在数据传递上

GET:在请求URL后面以?的形式更上发给服务器的参数,多个参数之间用&隔开;由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB

POST:发送给服务器的参数全部放在请求体中;理论上POST请求传递的数据量是没有限制的(具体的还要看服务器的处理能力)

选择GET和POST的建议

如果需要大量数据,比如文件上传,只能用POST请求;

GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST

如果仅仅是索要数据,建议使用GET

如果是增加、修改、删除数据,建议使用POST

IOS中发送HTTP请求的方案

苹果原生(自带)

NSURLConnection:用法简单,最古老最经典最直接的一种方案【坑较多】

NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术【2013推出,IOS7开始出的技术】

CFNetWork:NSURL*的底层,纯C语言。

第三方框架

ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新

AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多

HTTP通信过程-请求

HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容

请求头:包含了对客户端的环境描述、客户端请求信息等。

请求体:客户端发给服务器的具体数据,比如文件数据(POST请求才会有)

HTTP通信过程-响应

响应头:包含了对服务器的描述、对返回数据的描述

响应体:服务器返回给客户端的具体数据,比如文件数据

常见响应状态码

200 OK

400 客户端请求的语法错误,服务器无法解析

404  服务器无法根据客户端的请求找到资源

500  服务器内部错误,无法完成请求

NSURLConnection:

NSURL:请求地址

NSURLRequest:一个NSURLRequest对象就代表一个请求,它包含的信息有:

1个URL对象;请求方法、请求头、请求体、

NSMutableURLRequest :NSURLRequest的子类

NSURLConnection:负责发送请求,建立客户端和服务器的连接;发送数据给服务器,并收集来自服务器的响应数据。

使用NSURLConnection发送请求步骤

创建一个NSURL 对象,设置请求路径

传人NSURL创建一个NSURLRequest对象,设置请求头和请求体

使用NSURLConnection发送请求[使用代理方式]

NSURLSession

使用步骤:

使用NSURLSession对象创建Task,然后执行Task

Task的类型:NSURLSessionTask 、NSURLSessionDataTask 、NSURLSessionDownloadTask、 NSURLSessionUploadTask

JSON解析:

JSON是轻量级的数据格式,一般用于数据交互

服务器返回给客户端的数据,一般都是JSON格式或者是XML格式;JSON的体积小于XML

标准JSON格式的注意点:key必须用双引号

在IOS中,JSON的常见解析方案有4中

第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)

苹果原生自带:NSJSONSerialization(性能最好)

//解析JSON  JOSN—OC对象

[NSJSONSerialization JSONObjectWithData:(nonnull NSData *) options:(NSJSONReadingOptions) error:(NSError * _Nullable __autoreleasing * _Nullable)];

/*options的选项

NSJSONReadingMutableContainers = (1UL << 0),创建出来的字典和数字就是可变

NSJSONReadingMutableLeaves = (1UL << 1):数组或者字典里面的字符串也是可变的

NSJSONReadingAllowFragments = (1UL << 2) :允许解析出来的不是数组或字典,比如字符串和NSNumber

*/

//对象OC-JSON

[NSJSONSerialization dataWithJSONObject:(nonnull id) options:(NSJSONWritingOptions) error:(NSError * _Nullable __autoreleasing * _Nullable)];

格式化服务器返回的JSON数据

在线格式化:http://tool.oschina.net/codeformat/json

将服务器返回的字典或数字写成plist文件

视频播放

利用苹果官方的API简单播放视频

MPMoviePlayerController*vc = [MPMoviePlayerController alloc]initWithContentURL:(NSURL *)];

[selfpresentViewController:vcanimated:YEScompletion:nil];

JOSN解析字典转模型框架

Mantle:所有模型都必须继承自MTModel;

JSONModel:所有模型都必须继承自JSONModel;

MJExtension:不需要强制继承任何其他类;

设计框架需要考虑的问题

侵入性:一个框架侵入性大就意味着很难离开这个框架

易用性:比如少量代码实现N多功能

扩展性:意味着很容易给这个框架增加新的功能

XML

XML解析:有两种方式

DOM方式:一次性将整个XML文档加载进内存,适合小文档

SAX:从根元素开始,按顺序一个一个往下解析,比较适合解析大文件

在iOS中的XML解析

苹果原生:

NSXMLParser:SAX方式解析,使用简单

NSXMLParser*parser =  [[NSXMLParseralloc]initWithData:data];

/*开始解析*/

[parserparse];

parser.delegate=self;

第三方框架:libxml2:纯C语言,默认包含在IOS SDK中,同时支持DOM和SAX方式解析;GDataXML[不支持cocoapods]:DOM方式解析,由google开发,基于libxml2

相关文章

网友评论

      本文标题:iOS 网络的一些知识点总结

      本文链接:https://www.haomeiwen.com/subject/xaswattx.html