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

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
安卓培训教程Http的基本使用

一、简介OkHttp框架近2年是越来越火,当然跟其强大的功能是分不开的;需要注意的是OkHttp是一个基于Socket层面进行封装的框架,不像其他框架是在HttpUrlConnection基础上做了封装,OkHttp就是一个类似HttpUrlConnection的框架。其强大的功能可以从2个方面进行说明:更快:网络请求速度更快,支持HTTP/2技术,提升网络请求速度。当在HTTP/2不可用的情况下,会采用连接池,减少请求延迟,从而提高请求速度。更省:更省流量,通过GZIP对数据进行压缩并结合缓存机制,从而压缩下载数据的大小、并且在一定的时效内缓存请求的数据,减少短时间内多次请求的流量消耗。OkHttp除了以上总结的2点之外,还在其他很多方面进行了进行了优化,详情可以查看官方文档。二、基本使用此篇文章主要介绍OkHttp的Get请求和Post请求的使用方式以及注意事项。1、使用前配置。首先,添加网络请求权限。uses-permission android:name=android.permission.INTERNET/其次,在Module的build.gradle文件中添加如下代码,完成导包。(注意:写此篇文章时OkHttp的最新版本是3.2.0,在真实使用的时候,请到官网下载最新的包)compile com.squareup.okhttp3:okhttp:3.2.02、Post和Get请求。Get同步请求以上是OkHttp的Get同步请求。其中请求核心的代码是client.newCall(request).execute();此句代码进行了网络请求,并且没有开新的线程;所以如果此句话是在UI线程中执行,会报错NetworkOnMainThreadException。所有在使用OkHttp的同步请求的时候,需要开启工作线程,将client.newCall(request).execute();放到工作线程中执行。其中需要注意的问题:response.body().string();一个请求只能获取一次数据,所以如果要对结果进行复用,可以先将结果存放到一个局部变量中,比如文中的result。官方文档有这么一句话:The response body can be consumed only once.翻译:一个response body只能被消耗(使用)一次。response.body().close();请求结束之后,建议将body()关闭。官方文档描述:The response body must be closed. 之所以要关闭body,可以看一下close方法的源码。其中其实是在释放网络资源,关闭网络流。如果是在new Thread中执行的上述代码,切记要使用Handler将结果返回主线程后进行UI的更新。同步请求在实际开发中的作用,可以利用OkHttp的同步请求方式,替换android中的HttpUrlConnection进行网络请求。Get异步请求异步请求,顾名思义就是开启新的线程执行网络请求,异步请求和同步请求在代码上只有一句不同,废话不多说,看下面的代码:以上就是异步Get请求,和同步请求代码不一样的地方就是enqueue这句okHttpClient.newCall(request).enqueue()。和同步请求不同,异步请求开启了新的线程执行网络请求的代码。也就是说okHttpClient.newCall(request).enqueue()这句是可以在UI线程中直接执行,并且将结果返回到Callback中的onResponse方法中。同样在onResponse方法中通过 response.body().string()获取结果,之后关闭body:response.body().close()。异步请求的说明:上面我已经提到过,异步请求时开启了一个新的线程执行网络请求,那既然是开启线程就涉及到线程的管理,就要使用到线程池。在OkHttp的异步请求中也是有线程池的,关于这部分的讲解,我会在后面的源码分析中详细的说明。在开发中可能也有人这样写:new Request.Builder().get().url(Config.URL).build()。可以看到其中多了一个get()方法。此方法的源码如下:也就是设置了一个Get请求的方式。其实不写get()方法,Buidler对象默认就是Get方式,通过Buidler构造器源码一目了然:注意第2行代码,默认设置为GET请求。所以平时在使用Get方式请求的时候,即使不调用get()方法也是可以的。Post请求方式在介绍OkHttp的Post请求的基本使用之前,我们需要了解什么是Post,以及什么是Get?对于android程序员来说,对这2个概念不像web工程师那样熟悉,

文档评论(0)

383947923 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档