6 网络编程
通过网络实现客户端与服务器端数据的传递与共享
客户端:Android手机端
服务器端:后台提供数据的应用程序
6.1 基于Http协议的网络编程
Http是Internet中广泛使用的协议,几乎所有的计算机语言和SDK都会不同程度地支持HTTP,而以网络著称的Google公司自然也会使Android SDK拥有强大的HTTP访问能力。在Android SDK中可以采用多种方式使用HTTP,例如HttpURLConnection、HttpClient ( HttpGet、HttpPost )等。
Http是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。Http协议的主要特点是:支持C/S模式;简单快速,客户向服务器请求服务时,只需传送请求方法和路径,请求方法常用的有GET、HEAD、POST;灵活,HTTP允许传输任意类型的数据对象;无连接,无连接的含义是限制每次连接只处理一个请求。
HttpURLConnection类是jdk中的标准网络接口,该类的全限定名是java.net.HttpURLConnection,HttpUrlConnection通常用于发送和接收长度未知的流数据 。
(1)创建HttpURLConnection:通过调用Url.openConnection()并将其类型转换为HttpUrlConnection。
(2)创建Request:要包含最基本的Url,你可以设置请求头部(请求数据类型,长度等)。
(3)设置请求主体(body):这不是必须的,如果需要设置,确保setOutput(true);
(4)读取Response:返回响应,头部包含数据类型,长度等数据,可以通过。getInputStream()读取响应数据的主体(body),如果没有Response没有body,则返回一个Empty Stream。
(5)断开连接:调用HttpUrlConnection的disconnect()方法。
6.2网络通信框架Volly
Volley是Android平台上的网络通信库,既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络 *** 作。在使用Volley前请下载Volley库并放在libs目录下并add到工程中。
Volley请求网络队列:Volley请求网络都是基于请求队列的,开发者只要把请求放在请求队列中就可以了,请求队列会依次进行请求,一般情况下,一个应用程序如果网络请求没有特别频繁则完全可以只有一个请求队列(对应Application),如果非常多或其他情况,则可以是一个Activity对应一个网络请求队列。
Volly架构:Volley使用了线程池来作为基础结构,主要分为主线程,cache线程和network线程。主线程和cache线程都只有一个,而NetworkDispatcher线程可以有多个,这样能解决比并行问题。
Volly使用步骤:
(1)AndroidManifest.xml中添加访问网络权限
(2)创建请求队列RequestQueue对象
(3)创建请求Request对象
(4)将Request对象add到RequestQueue对象中
6.3 OKHttp网络编程框架
okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary)。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。使用OKHTTP已经能够实现网络连接。
Get请求使用方法:一种是同步请求,一种是异步请求。
(1)创建一个okhttpclient对象
(2)创建一个请求对象
(3)创建一个call对象
(4)发送请求,有同步的请求和异步的请求之分。call.execute()表示为同步请求,call.enqueue(new Callback(){…})为异步请求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)