Android——Okhttp3入门

首先,给出OKHttp的项目地址:https://github.com/square/okhttp

OkHttp是一个高效的HTTP库:1.支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求2.如果SPDY不可用,则通过连接池来减少请求延时3.无缝的支持GZIP来减少数据流量4. 缓存响应数据来减少重复的网络请求

  • 一般的get请求
  • 一般的post请求
  • 基于Http的文件上传
  • 文件下载
  • 加载图片
  • 支持请求回调,直接返回对象、对象集合
  • 支持session的保持

1.Okhttp的基本使用

在Gradle中引入依赖库 compile 'com.squareup.okhttp:okhttp:2.7.2'

2.OKHttp在使用之前,首先要了解下面几个比较核心的类以及它的功能。

  1. OkHttpClient 客户端对象
  2. Request是OkHttp中访问的请求,Post请求中需要包含RequestBody
  3. Builder是辅助类,用于生产对象
  4. Response即OkHttp中的响应,响应中可以得到返回是否成功,返回数据
  5. MediaType  数据类型,用来表明是JSON等一系列格式
  6. RequestBody 请求数据,在Post请求中用到
  7. client.newCall(request).execute()是同步的请求方法
  8. client.newCall(request).enqueue(Callback callBack)是异步的请求方法,但是Callback里面的代码是执行在子线程的,因此不能更新UI

3.OKHttp的基本使用步骤(以POST方式从服务器取JSON数据为例)

  1. 创建OkHttpClient对象,官方文档要求我们最好使用单例模式
  2. 如果是post请求的话,需要通过FormEncodingBuilder创建RequestBody对象,指定需要post传进去的参数。get请求则不用。
  3. 创建Request对象,这个对象是请求对象,需要指定URL。post请求的时候需要指定RequestBody对象,get请求则不用。
  4. 调用OkHttpClient的newCall方法,把Request对象传进去,然后执行execute或者enqueue方法,两者的区别在上文已提到。在CallBack中的onResponse方法就可以做你需要做的事。onResponse回调的参数是response,一般情况下,比如我们希望获得返回的字符串,可以通过response.body().string()获取;如果希望获得返回的二进制字节数组,则调用response.body().bytes();如果你想拿到返回的inputStream,则调用response.body().byteStream()看到这,你可能会奇怪,竟然还能拿到返回的inputStream,看到这个最起码能意识到一点,这里支持大文件下载,有inputStream我们就可以通过IO的方式写文件。不过也说明一个问题,这个onResponse执行的线程并不是UI线程。的确是的,如果你希望操作控件,还是需要使用handler等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值