安卓培训教程-Http的基本使用.docx

安卓培训教程-Http的基本使用.docx

ID:28516568

大小:445.42 KB

页数:8页

时间:2018-12-11

安卓培训教程-Http的基本使用.docx_第1页
安卓培训教程-Http的基本使用.docx_第2页
安卓培训教程-Http的基本使用.docx_第3页
安卓培训教程-Http的基本使用.docx_第4页
安卓培训教程-Http的基本使用.docx_第5页
资源描述:

《安卓培训教程-Http的基本使用.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一、简介OkHttp框架近2年是越来越火,当然跟其强大的功能是分不开的;需要注意的是OkHttp是一个基于Socket层面进行封装的框架,不像其他框架是在HttpUrlConnection基础上做了封装,OkHttp就是一个类似HttpUrlConnection的框架。其强大的功能可以从2个方面进行说明:更快:网络请求速度更快,支持HTTP/2技术,提升网络请求速度。当在HTTP/2不可用的情况下,会采用连接池,减少请求延迟,从而提高请求速度。更省:更省流量,通过GZIP对数据进行压缩并结合缓存机制,

2、从而压缩下载数据的大小、并且在一定的时效内缓存请求的数据,减少短时间内多次请求的流量消耗。OkHttp除了以上总结的2点之外,还在其他很多方面进行了进行了优化,详情可以查看官方文档。二、基本使用此篇文章主要介绍OkHttp的Get请求和Post请求的使用方式以及注意事项。1、使用前配置。首先,添加网络请求权限。其次,在Module的build.gradle文件中添加如下代码,完成导包

3、。(注意:写此篇文章时OkHttp的最新版本是3.2.0,在真实使用的时候,请到官网下载最新的包)compile'com.squareup.okhttp3:okhttp:3.2.0'2、Post和Get请求。Get同步请求以上是OkHttp的Get同步请求。其中请求核心的代码是client.newCall(request).execute();此句代码进行了网络请求,并且没有开新的线程;所以如果此句话是在UI线程中执行,会报错NetworkOnMainThreadException。所有在使用OkHt

4、tp的同步请求的时候,需要开启工作线程,将client.newCall(request).execute();放到工作线程中执行。其中需要注意的问题:response.body().string();一个请求只能获取一次数据,所以如果要对结果进行复用,可以先将结果存放到一个局部变量中,比如文中的result。官方文档有这么一句话:Theresponsebodycanbeconsumedonlyonce.翻译:一个responsebody只能被消耗(使用)一次。response.body().close

5、();请求结束之后,建议将body()关闭。官方文档描述:Theresponsebodymustbeclosed.之所以要关闭body,可以看一下close方法的源码。其中其实是在释放网络资源,关闭网络流。如果是在newThread中执行的上述代码,切记要使用Handler将结果返回主线程后进行UI的更新。同步请求在实际开发中的作用,可以利用OkHttp的同步请求方式,替换android中的HttpUrlConnection进行网络请求。Get异步请求异步请求,顾名思义就是开启新的线程执行网络请求,异

6、步请求和同步请求在代码上只有一句不同,废话不多说,看下面的代码:以上就是异步Get请求,和同步请求代码不一样的地方就是enqueue这句okHttpClient.newCall(request).enqueue()。和同步请求不同,异步请求开启了新的线程执行网络请求的代码。也就是说okHttpClient.newCall(request).enqueue()这句是可以在UI线程中直接执行,并且将结果返回到Callback中的onResponse方法中。同样在onResponse方法中通过respons

7、e.body().string()获取结果,之后关闭body:response.body().close()。异步请求的说明:上面我已经提到过,异步请求时开启了一个新的线程执行网络请求,那既然是开启线程就涉及到线程的管理,就要使用到线程池。在OkHttp的异步请求中也是有线程池的,关于这部分的讲解,我会在后面的源码分析中详细的说明。在开发中可能也有人这样写:newRequest.Builder().get().url(Config.URL).build()。可以看到其中多了一个get()方法。此方法的

8、源码如下:也就是设置了一个Get请求的方式。其实不写get()方法,Buidler对象默认就是Get方式,通过Buidler构造器源码一目了然:注意第2行代码,默认设置为GET请求。所以平时在使用Get方式请求的时候,即使不调用get()方法也是可以的。Post请求方式在介绍OkHttp的Post请求的基本使用之前,我们需要了解什么是Post,以及什么是Get?对于android程序员来说,对这2个概念不像web工程师那样熟悉,在这里我们先简要说明Pos

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。