客户端:移动应用(iOS、android等)
服务器:为客户端提供服务、提供数据、提供资源的机器
请求:客户端向服务器索取数据的一种行为
响应:服务器对客户端的请求做出的反应,一般指返回数据给客户端
URL(Uniform Resource Locator)
- 通过一个URL,能找到互联网唯一的一个资源
- URL就是资源地址、位置,互联网上每一个资源都有唯一的URL
格式:
协议://主机地址/路径(eg:http:www.baidu.com/img/login.png)- 协议:不同的协议,代表着不同的资源查找方式、资源传输方式
- 主机地址:存放资源的主机(服务器)的IP地址(域名)
- 路径:资源在主机(服务器)中的具体位置
URL中常见的协议
- HTTP:超文本传输协议,访问的是远程网络资源,http://
- file:访问的是本地计算机上的资源,file://
- mailto:访问的是电子邮件地址,mailto:
- FTP:访问的是共享主机的文件资源,ftp://
- 作用:
- HTTP协议规定了客户端和服务器之间的数据传输格式
- 让客户端和服务器能有效的进行数据沟通
- 特点:
- 简单快速:因为HTTP协议简单,所以HTTP服务器的程序规模小,因为通信速度快
- 灵活:HTTP允许传输各种各样的数据
- HTTP基本通信过程
- 请求:客户端向服务器发起请求
- 响应:服务器返回客户端相应数据
- 发送HTTP请求的方法
- get(常用)、post(常用)、opions、head、put、delete、trace、connect、patch
- get
- 在请求URL后面以?的形式跟上发送给服务器的参数,多个参数之间用&隔开,比如(http://www.test.com/login?username=123&psd=123&type=JSON)
- 由于浏览器和服务器对URL的限制,因此在URL后面附带上的参数是有限的,通常不能超过1KB
- post
- 发给服务器的参数全部放在请求体中
- 理论上,POST传递的数据没有限制
get和post的选择
- 如果传递大量数据,比如文件上传,只能用post请求
- get的安全性比post要差些,如果包含机密信息,建议用post
- 如果仅仅索取数据(数据查询),建议使用get
- 如果是增加、修改、删除数据,建议是用post
发送HTTP请求的方案
- NSURLConnection:用法简单,(坑比较多)
- NSURLSession:功能比NSURLConnection强大,苹果目前比较推荐
- CFNetwork :苹果底层,纯C语言
- ASIHTTPRequest:功能强大,已停止更新
- AFNetworking:简单易用,三方库中比较主流
HTTP通信过程 - 请求
HTTP协议规定:一个完整的由客户端发送给服务器的HTTP请求中包含以下内容- 请求头:包含了对客户端的环境描述、客户端请求信息等
- 请求体:客户端发送给服务器的具体数据,比如文件数据(POST请求才会有)
请求头内容: GET(POST) /mini.png HTTP/1.1 包含了请求方法、请求资源路径、HTTP协议版本 Host:120.25.226.186:32812 客户端想访问的服务器主机地址 User-Agent:Mozilla/5.0 客户端的类型,客户端的软件环境 Accept:text/html 客户端所能接收的数据类型 Accept-Language:zh-cn 客户端的语言环境 Accept-Encoding:gzip 客户端支持的数据压缩格式
- HTTP通信过程 - 响应
客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端
HTTP协议规定:一个完整的HTTP响应中包含以下内容- 响应头:包含了对服务器的环境描述、客户端请求信息等
- 响应体:服务器返回给客户端的具体数据,比如文件数据
响应头内容: HTTP/1.1 200 ok 包含了HTTP协议版本、状态码、状态英文名称 Server:Apache-Coyote/1.1 服务器类型 Content-Type:image/jpeg 返回数据的类型 Content-Length:56811 返回数据的长度 Date:Mon,23,Jun 2014 12:54:52 GMT 响应的时间
文章来源: iOS中的网络编程基础(一)