iOS 网络的一些知识点总结

网络

移动网络应用=良好的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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容