1、什么是URL
URL的全称是Uniform Resource Locator(统一资源定位符)
通过1个URL,能找到互联网上唯一的1个资源
URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL
URL的基本格式=协议://主机地址/路径
http://202.108.22.5/img/bdlogo.gif
协议:不同的协议,代表着不同的资源查找方式、资源传输方式
主机地址:存放资源的主机的IP地址(域名)
路径:资源在主机中的具体位置
HTTP
超文本传输协议,访问的是远程的网络资源,格式是
http://
http
协议是在网络开发中最常用的协议
file
访问的是本地计算机上的资源,格式是
file://
(不用加主机地址)
mailto
访问的是电子邮件地址,格式是
mailto:
FTP
访问的是共享主机的文件资源,格式是
ftp://
不管是移动客户端还是
PC
端,访问远程的网络资源经常使用
HTTP
协议
访问百度主页:
http://www.baidu.com
获得新浪的微博数据
获得大众点评的团购数据
2、HTTP
协议的作用
HTTP
的全称是
HypertextTransfer Protocol
,超文本传输协议
规定
客户端
和
服务器
之间的数据传输格式
让
客户端
和
服务器
能有效地进行数据沟通
简单快速
因为
HTTP
协议简单,所以
HTTP
服务器的程序规模小,因而通信速度很快
灵活
HTTP
允许传输任意类型的数据
HTTP 0.9
和
1.0
使用非持续连接
限制每次连接只处理一个请求,服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间
要想使用
HTTP
协议向服务器索取数据,得先了解
HTTP
的
通信
过程
完整的
http
通信可以分为
2
大步骤
请求
:
客户端
向
服务器
索要数据
响应
:
服务器
返回
客户端
相应的数据
在
iOS
中,常见的发送
HTTP
请求的方案有
苹果原生(自带)
NSURLConnection
:用法简单,最古老最经典最直接的一种方案
NSURLSession
:
iOS
7
新出的技术,功能比
NSURLConnection
更加强大
CFNetwork
:
NSURL
*的底层,纯
C
语言
第三方框架
ASIHttpRequest
:外号“
HTTP
终结者”,功能极其强大,可惜早已停止更新
AFNetworking
:简单易用,提供了基本够用的常用功能,维护和使用者多
MKNetworkKit
:简单易用,产自三哥的故乡印度,维护和使用者少
建议
为了提高开发效率,企业开发用的基本是第三方框架
在
HTTP
/
1.1
协议中,定义了
8
种发送
http
请求的方法
GET
、
POST
、
OPTIONS
、
HEAD
、
PUT
、
DELETE
、
TRACE
、
CONNECT
、
PATCH
根据
HTTP
协议的设计初衷,不同的方法对资源有不同的操作方式
PUT
:增
DELETE
:删
POST
:改
GET
:查
最常用的是
GET
和
POST
(实际上
GET
和
POST
都能办到增删改查)
要想使用
GET
和
POST
请求跟服务器进行交互,得先了解一个概念
参数
就是传递给服务器的具体数据,比如登录时的帐号、密码
3、GET
和
POST
的主要区别表现在数据传递上
GET
在请求
URL
后面以
?
的形式跟上发给服务器的参数,多个参数之间用
&
隔开,比如
http://ww.test.com/login?username=123&pwd=234&type=JSON
由于浏览器和服务器对
URL
长度有限制,因此在
URL
后面附带的参数是有限制的,通常不能超过
1KB
POST
发给服务器的参数全部放在
请求体
中
理论上,
POST
传递的数据量没有限制(具体还得看服务器的处理能力)
HTTP
协议规定
:1
个完整的由
客户端
发给
服务器
的
HTTP
请求中包含以下内容
请求行
:包含了
请求方法
、
请求资源路径
、
HTTP
协议版本
GET /MJServer/resources/images/1.jpg HTTP/1.1
请求头
:包含了
对客户端的环境描述
、
客户端请求的主机地址
等信息
Host: 192.168.1.105:8080 //客户端想访问的服务器主机地址
User-Agent: Mozilla/5.0(Macintosh; Intel Mac OS X 10.9) Firefox/30.0
// 客户端的类型,客户端的软件环境
Accept: text/html,*/* //客户端所能接收的数据类型
Accept-Language: zh-cn //客户端的语言环境
Accept-Encoding: gzip //客户端支持的数据压缩格式
请求体
:
客户端
发给
服务器
的具体数据,比如文件数据