网络编程一

网络编程一

数据的传输

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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