iOS开发中HTTP协议的应用
2015-07-02 10:59
597 查看
HTTP请求遵循客户端-服务器范式,客户端建立一个到服务器的TCP连接,然后发送HTTP请求。
服务器随后通过在同一个TCP连接上发送一个HTTP响应来响应该请求。
客户端可以重用这个TCP连接发送另一个请求或是将连接关闭。建立一个TCP连接遵循三次握手协议,而关闭一个TCP连接需要四次握手。
HTTP协议与HTTPS协议最大的差别在于会话的连接建立阶段,HTTPS协议需要在客户端HTTP请求发送前与服务器建立SSL会话。
HTTP请求包含3部分:请求行、请求头与请求体。请求行包含:HTTP请求方法、请求URI与HTTP版本。
HTTP请求方法:
GET:从服务器端获取一段实体
POST:使用客户端提供的数据更新实体,且POST请求是非幂等的,处理多个相同请求与处理单个该请求结果不同
HEAD:获取响应的元数据,常用于检查服务器最近的内容变化而不用检索全部内容
PUT:使用客户端提供的数据添加实体,服务器所需信息一般放在请求体之中,且PUT请求大多是幂等的
DELETE:根据URI内容或客户端提供的请求体来删除实体
NSURL:用于管理URL值并访问URL所指向的内容,所给URL可指向本地资源也可以指向网络资源,如果指向的是网络资源,就会在后台线程中执行代码。NSURL对象是不可变的,无法先构建空的NSURL对象然后通过调用赋值方法来装配其属性。
NSURLRequest:将之前生成的NSURL封装成请求,包含了加载URL内容所需的信息。如果URL是HTTP或HTTPS,那么请求方法将是GET,并且使用操作系统提供的默认请求头。NSMutableURLRequest是NSURLRequest的子类,提供了赋值方法以修改请求的属性。可以通过内存或NSInputStream向NSURLRequest提供请求体,方法为setHTTPBodyStream(inStream)。
NSURLConnection:是URL加载系统活动的中心,提供了用于初始化,开启与取消连接的方法。
NSURLResponse:会在URL加载请求完毕后返回,如果成功会返回NSData,在OC以及Swift2.0之前,失败会返回NSError,在Swift2.0之后采用try catch来进行错误处理。NSHTTPURLResponse是NSURLResponse的子类,增添了响应头(为NSDictionary类型,键为头的名字,值为头的值)和HTTP状态码作为额外属性。
服务器随后通过在同一个TCP连接上发送一个HTTP响应来响应该请求。
客户端可以重用这个TCP连接发送另一个请求或是将连接关闭。建立一个TCP连接遵循三次握手协议,而关闭一个TCP连接需要四次握手。
HTTP协议与HTTPS协议最大的差别在于会话的连接建立阶段,HTTPS协议需要在客户端HTTP请求发送前与服务器建立SSL会话。
HTTP请求包含3部分:请求行、请求头与请求体。请求行包含:HTTP请求方法、请求URI与HTTP版本。
HTTP请求方法:
GET:从服务器端获取一段实体
POST:使用客户端提供的数据更新实体,且POST请求是非幂等的,处理多个相同请求与处理单个该请求结果不同
HEAD:获取响应的元数据,常用于检查服务器最近的内容变化而不用检索全部内容
PUT:使用客户端提供的数据添加实体,服务器所需信息一般放在请求体之中,且PUT请求大多是幂等的
DELETE:根据URI内容或客户端提供的请求体来删除实体
NSURL:用于管理URL值并访问URL所指向的内容,所给URL可指向本地资源也可以指向网络资源,如果指向的是网络资源,就会在后台线程中执行代码。NSURL对象是不可变的,无法先构建空的NSURL对象然后通过调用赋值方法来装配其属性。
NSURLRequest:将之前生成的NSURL封装成请求,包含了加载URL内容所需的信息。如果URL是HTTP或HTTPS,那么请求方法将是GET,并且使用操作系统提供的默认请求头。NSMutableURLRequest是NSURLRequest的子类,提供了赋值方法以修改请求的属性。可以通过内存或NSInputStream向NSURLRequest提供请求体,方法为setHTTPBodyStream(inStream)。
NSURLConnection:是URL加载系统活动的中心,提供了用于初始化,开启与取消连接的方法。
NSURLResponse:会在URL加载请求完毕后返回,如果成功会返回NSData,在OC以及Swift2.0之前,失败会返回NSError,在Swift2.0之后采用try catch来进行错误处理。NSHTTPURLResponse是NSURLResponse的子类,增添了响应头(为NSDictionary类型,键为头的名字,值为头的值)和HTTP状态码作为额外属性。
相关文章推荐
- tableViewCell的网络图片加载方法
- Http协议
- TCP实现客户端和服务器的通信
- 查看网络图片
- 无线网络模式和加密方式简介
- 查看网络图片
- Python网络爬虫之网盘爬虫【简易版】
- 网络基础(2)--通信过程之一HTTP协议
- 《UNIX网络编程》卷I 实验环境搭建
- iOS开发网络篇—使用ASI框架进行文件下载
- iOS开发之runtime的运用-获取当前网络状态
- Android Http编程之HttpClient
- 构建自己的AngularJS,第一部分:作用域和digest 转摘:http://www.ituring.com.cn/article/39865
- 解决Unable to update index for central|http://repo1.maven.org/maven2错误
- Linux下tcp并发服务器的几种设计的模式套路
- iOS开发工具-网络封包分析工具Charles
- Linux内核软RPS实现网络接收软中断的负载均衡分发
- 网络基础篇(一)--TCP/IP协议族
- 【C语言】模拟实现库函数srtcpy函数
- 【Linux 内核网络协议栈源码剖析】connect 函数剖析(一)