1、定义:
GET和POST是两种最常用的与服务器进行交互的HTTP方法
GET
GET的语义是获取指定URL的资源
将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用"?"连接,各变量之间使用"&"连接
貌似不安全,因为在传输过程中,数据被放在请求的URL中
传输的数据量小,这主要是因为受URL长度限制
POST
POST的语义是向指定URL的资源添加数据
将数据放在数据体中,按照变量和值相对应的方式,传递到action所指向URL
所有数据对用户来说不可见
可以传输大量数据,上传文件只能使用Post
2、区别:
因为POST请求会向服务器发送数据体,因此在刷新页面时会出现提示窗口
而GET请求不会向服务器发送数据体,因此没有提示
从请求的本质而言,GET请求要比POST请求更安全,效率也会更高
3、iOS发送网络请求的步骤:
1、实例化URL(网络资源)
2、根据URL建立URLRequest(网络请求)
默认为GET请求
对于POST请求,需要创建请求的数据体
3、利用URLConnection发送网络请求(建立连接)
4、获得结果
NSURLConnection提供了两个静态方法可以直接以同步或异步的方式向服务器发送网络请求
同步请求:
sendSynchronousRequest:returningResponse:error:
异步请求:
sendAsynchronousRequest:queue: completionHandler:
3、NSURLConnectionDataDelegate:
在网络请求过程中,接收数据的过程实际上是通过NSURLConnectionDataDelegate来实现的,常用代理方法包括:
服务器开始返回数据,准备工作
(void)connection:didReceiveResponse:
收到服务器返回的数据,本方法会被调用多次
- (void)connection:didReceiveData:
数据接收完毕,做数据的最后处理
(void)connectionDidFinishLoading:
网络连接错误
- (void)connection:didFailWithError:
4、代理的缺点:
使用代理实现关联性较强的业务逻辑时
4.1代理方法较多,比较分散
4.2要处理一个请求,需要在很多地方编写代码
4.3不利于逻辑实现、代码编写、调试、维护以及扩展
4.4尤其当存在多个请求时会变得非常麻烦