iOS中的网络框架

iOS中的网络框架

NSURLConnection

NSURLConnection是个Cocoa级别的API,构建在NSSream之上,设计时针对4个常见的URI模式进行了优化支持,文档、HTTP、HTTPS与FTP。NSURLConnection支持同步和异步两种请求

Game Kit

Game Kit并不需要网络基础设施就能使用,能够创建自组(ad-hoc)的Bluetooth Personal Area Networks(PAN)来实现点对点的通信

Bonjour

Bonjour是Apple对零配置(zeroconf)网络的实现,通过名字、服务类型与域这几个元组来引用服务

NSStream

NSStream是一个Cocoa级别的API,构建在CFNetwork之上,作为NSURLConnection的基础,旨在完成一些底层的网络任务。NSStream可以支持使用telnet或SMTP等NSURLConnection不支持的协议进行通信。NSStream是异步的,通过NSStreamDelegate实现通信更新

CFNetwork

CFNetwork API位于基础的BSD socket之上,与BSD socket之间的主要差别在于CFNetwork集成了运行循环。CFNetwork构建在Core Foundation层的CFSocket和CFStream API之上

HTTP

HTTP介绍

Tim Berners-Lee于1990年创造了HTTP协议的首个版本,最初的的提案中有3个主要的创新:HTML、HTTP与URL。

  • HTML定义了向文本添加样式的一种方式
  • HTTP定义了在服务端与客户端之间传输数据的一种方式
  • URL定义了在网络机器中定位唯一资源的一种方式

HTTP请求与响应

HTTP的规范是IETF FRF 2616 http://www.ietf.org/rfc/rfc2616.txt

URL结构

http://user:password@hostname:port/absolute-path?query

协议://[认证]主机名:端口/绝对路径/?查询字符串1&查询字符串2

绝对路径和查询字符串不可以包含空格、回车与换行符,因此,URL通常会使用百分号进行编码,RFC 3986(http://tools.ietf.org/html/rfc3986)规定了URL百分号编码的详细信息

请求内容

HTTP请求包含3部分:请求行、请求头与请求体

HTTP是无状态的协议,即HTTP服务器不会保留关于某个请求的任何信息以用在未来的请求中。Cookie机制提供了一种方式,可以将一些简单地状态信息存储在客户端,并在后续的请求中与服务器进行通信

请求体必须遵循客户端与服务器之间预先确定的数据编码,对于Web浏览器来说,这通常是表单编码数据,但对于移动应用来说,该编码通常是XML或JSON数据

响应内容

HTTP响应包含3部分:状态行、响应头与相应体

在iOS的URL加载系统中,NSURLResponse及其子类NSHTTPURLResponse封装了请求返回的数据

Cocoa层 iOS HTTP API

在URL加载系统中,有3个主要的方式可以执行HTTP请求和接收响应

- 同步    (线程会被阻塞)
- 队列式异步        (创建一个队列并放入后台线程执行)
- 异步    (调用委托方法)

所有的URL加载请求方式都会用到这4类对象

NSURLNSURLRequestNSURLConnectionNSURLResponse对象

原文:大专栏  iOS中的网络框架


猜你喜欢

转载自www.cnblogs.com/petewell/p/11422179.html