网络编程一

网络编程一

数据的传输

1、服务器的数据是分成一个个单个的数据包传入客户端

2、客户端与服务器做数据传输,数据必须约定使用同一种格式

HTTP协议的概念

1、全称“超文本传输协议”,浏览器和服务器之间的通信规则

2、HTTP协议永远都是客户端发起请求,服务器回送响应

3、客户端发送一个HTTP请求,是向服务器提交了一个HTTP请求包

4、服务器收到请求之后,向客户端回应一个HTTP响应包

HTTP的请求方式:GET请求和POST请求

HTTP——请求包结构:请求头、请求体

GET:url、请求头

POST:url、请求头、请求体

HTTP的响应包结构:响应头、响应体

HTTP响应有个状态码,200为成功,404未找到页面

数据格式:JSON(主要)、XML

响应头中Content-Type表示响应体中数据的类型

主要类型:text/html、application/json、text/json、text/xml、image/jpeg

NSURLSession的相关使用

(可以参考代码:UI学习—-UI高级—-07网络编程—-代码—-01)

session网络会话

//1 URL (定位资源)

//2 URLRequest (配置请求:url请求头[请求体])

//请求方式:默认是get请求

//3 session (会话)<默认发起的是异步的网络请求>

//4 task (任务)

//(1)解析错误

//(2)查看状态码

//(3)解析data数据

//(4)转换成model

//(5)显示在UI界面上

//5 resume (执行任务)

[task resume];//resume:恢复

NSURLRequest

(可以参考代码:UI学习—-UI高级—-07网络编程—-代码—-02)

1、NSURLRequest用于存储客户端发送给服务器的数据包信息和请求设置

2、NSURLRequest只有很少的基本设置选项,我大部分使用其子类:NSMutableURLRequest

3、NSURLRequest (url请求头请求体[post]请求方式缓存策略...)

requestWithURL:url

cachePolicy:缓存策略

timeoutInterval:超时的时间

{NSURLRequestUseProtocolCachePolicy:默认的协议缓存策略(首先判断是否有缓存,如果缓存没有,直接从服务器获取;如果有缓存,根据响应中的cache-control中的一个字段判断,询问服务器数据是否有更新,如果有更新,重新请求服务器)}

//NSURLRequest *request = [NSURLRequest requestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120];

NSURLSessionConfiguration

1、一个Session可以发起的多个网络请求任务(Task)

2、三种类型的任务(Task):

2.1数据任务:数据任务擅长处理小且频繁的应用程序与服务器之间的请求,例如:请求JSON数据,因为数据任务不会将数据存储到磁盘文件中,所以不支持后台Session

2.2下载任务:以文件的形式接收数据,可以在程序没有运行时进行后台下载

2.3上传任务:以文件的形式发送数据,可以在程序没有运行时进行后台上传

3、session(可以参考代码:UI学习—-UI高级—-07网络编程—-代码—-03)

//(1)使用默认的session

//NSURLSession *session = [NSURLSessionsharedSession];

//(2)自定义的session

/*

+defaultSessionConfiguration用于创建默认类型的Session对象

+ephemeralSessionConfiguration用于创建临时类型的Session对象

+backgroundSessionConfiguration:(NSString*)identifier用于创建后台Session对象

identifier:作用标示后台的session,最好和App的bundle id相同

*/

NSURLSessionConfiguration *config =[NSURLSessionConfiguration defaultSessionConfiguration];

//配置属性

//配置缓存策略

config.requestCachePolicy =NSURLRequestUseProtocolCachePolicy;

//是否使用蜂窝数据

config.allowsCellularAccess = YES;

//...

[NSURLSession sessionWithConfiguration:config];

//task

//resume

NSURLResponse(可以参考代码:UI学习—-UI高级—-07网络编程—-代码)

//下载任务

NSURLSessionDownloadTask(可以参考代码:UI学习—-UI高级—-07网络编程—-代码—04)

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

推荐阅读更多精彩内容

  • 一. 网络编程基础 在移动互联网时代,几乎所有应用都需要用到网络,只有通过网络跟外界进行数据交互、数据更新,应用才...
    xx_cc阅读 19,745评论 12 162
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • iOS网络编程读书笔记 Facade Tester客户端门面模式的实例(被动版本化) 被动版本化,所以硬编码URL...
    melouverrr阅读 1,598评论 3 7
  • 一、网络编程的重要性 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 在移动互联网时代,移动...
    M_慕宸阅读 2,325评论 1 19
  • 前言 这篇文章是这个系列的开篇,作为移动开发者,开发的应用不免会对网络进行访问,虽然现在已经有很多的开源库帮助我们...
    刘望舒阅读 1,510评论 2 18