免费开源的iOS开发学习平台

iOS开发之网络编程:3-网络请求之GET、POST请求简介

在HTTP 1.1协议中,定义了8种HTTP请求的方法,即GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH,不同的方法对资源有不同的操作方式,其中最常用的是GETPOST请求,我们优先掌握这两种HTTP请求方法。

GET请求和POST请求简介

GET请求是将信息直接拼接在URL后面,在请求URL后面以问号(?)的形式拼接发给服务器的参数,多个参数之间用&号隔开。GET请求在实际开发中使用比较普遍,主要原因在于其结构简单,但是浏览器和服务器对URL长度有限制,通常不能超过1KB。

POST请求是将一些比较重要的信息转化为二进制流。POST请求发给服务器的参数全部放在请求体中。理论上,POST传递的数据量没有限制,不过具体还得看服务器的处理能力。POST请求由于对传递的数据进行了封装,因此其安全性要高于GET请求。

需要注意的是不论是GET请求还是POST请求都是由后台服务器定义的,程序员可以通过服务器开发人员提供的接口文档获取发送的请求方式应该使用GET还是POST。

GET请求与POST请求由于封装传输数据的方式存在差别,因此两者在适用场景也有区别。假如仅仅是从服务器索取数据,即执行数据查询操作,建议使用GET,而如果是增加、修改、删除数据,建议使用POST。如果要传递大量数据,比如文件上传,只能用POST请求。另外,GET请求的安全性比POST请求差,因此如果传输内容包含机密\敏感信息,建议用POST请求。

iOS开发网络编程可选方案

在iOS开发过程中,如果设计网络编程,可以使用苹果官方框架中提供的方法,也可以使用第三方开源框架。

在苹果官方提供的解决方案中,最早出现的是NSURLConnection。作为Core Foundation/CFNetwork 框架的APIs之上的一个抽象,NSURLConnection伴随着2003年Safari浏览器的原始发行版本,诞生于十几年前。NSURLConnection这个名字,实际上指的是一组构成Foundation框架中URL加载系统的相互关联的组件:NSURLRequest,NSURLResponse,NSURLProtocol,NSURLCache,NSHTTPCookieStorage,NSURLCredentialStorage,以及和它同名的NSURLConnection。

在2013年的WWDC上,苹果官方提供了NSURLConnection的继任者--NSURLSession。与NSURLConnection相比,NSURLSession最直接的改善就是提供了配置每个会话的缓存,协议,Cookie和证书政策(Credential Policies),甚至跨应用程序共享它们的能力。这使得框架的网络基础架构和部分应用程序独立工作,而不会互相干扰。每一个NSURLSession对象都是根据一个NSURLSessionConfiguration初始化的,该NSURLSessionConfiguration指定了上面提到的政策,以及一系列为了提高移动设备性能而专门添加的新选项。NSURLSession的另一重要组成部分是会话任务NSURLSessionTask,它负责处理数据的加载,以及客户端与服务器之间的文件和数据的上传下载服务。目前,NSURLSession已经替代NSURLConnection成为主流。

除了苹果官方提供的NSURLSession以及NSURLConnection之外,在实际的开发中,我们更加普遍的使用第三方开源框架--AFNetworking来发送网络请求。AFNetworking的维护者众多,并且使用极其简便,已经成为iOS以及Mac OS X开发中网络加载操作的首选,在接下来的内容中,我们也会一起学习AFNetworking的使用方法。除了AFNetworking之外,还有可能看到ASIHttpRequest框架的身影,但该框架已经无人维护,因此只能在一些历史代码中看到。