OkHttp| 青训营笔记

134 阅读2分钟

OkHttp| 青训营笔记

写在前面

这是我参与「第四届青训营 」笔记创作活动的第1天

该笔记为之前断断续续的笔记片段和大项目之后的笔记的整合,复习一些基本知识和在项目中遇到的问题。如有不妥之处,还望予以指正。

知识梳理

OkHttp 介绍

背景

网络框架有:HttpURLConnectionVolleyOkHttpRetrofit

Android 提供了两种 Http 接口:标准Java接口 HttpURLConnection 和 Apache接口 HttpClient

但是 HttpClient 已经不建议被使用了,HttpURLConnection 作为轻量级的 Http 客户端,想要使用也是可以的。Volley 是基于 HttpClient 的,所以也不建议使用。

不过目前有更加高效、快速的 OkHttp 和 基于 OkHttp 的 Retrofit,HttpURLConnection 就不是一个更好的选择,大项目也建议 OkHttp。

优缺点

优点

  1. 支持SPDY, 可以合并多个到同一个主机的请,使用连接池技术减少请求的延迟。
  2. 使用GZIP压缩减少 传输 的数据量, 缓存响应避免重复的网络请求、拦截器等等。

缺点

  1. 消息回来需要切到主线程,主线程要自己去写。
  2. 传入调用比较复杂。

OkHttp 的使用

我只在 Spring MVC 里做过相应的处理 GETPOST 请求,感觉上大致上是类似的,毕竟都是网络通信。以下就是 GET 和 POST 的相关代码。

GET

GET 请求是常规的:客户端对象、请求、发送请求。

// OkHttp GET
// 新建 Client 对象
OkHttpClient okHttpClient = new OkHttpClient();
// 新建 Request 请求
Request request = new Request.Builder().get().url("url").build();
// 将 Request 封装为 Call
Call call = okHttpClient.newCall(request);
// 返回 response
try {
    Response response = call.execute();
} catch (IOException e) {
    e.printStackTrace();
}

POST

POST 也和 GET 类似。不过与 GET 相比,多了一个请求体,毕竟 POST 相比于 GET 安全性更高,需要加密,也不难理解。POST 也支持 JOSN 等数据的传递,具体使用起来并不会特别困难。

// OkHttp POST
// 新建 RequestBody
RequestBody requestBody = new FormBody.Builder().add("tag","body").build();
request = new Request.Builder().post(requestBody).url("url").build();

总结

以后在新项目中,推荐使用 OkHttp 或者 Retrofit。虽然我并不负责这一块的代码,但是目前来看,使用二者可以节省开发时间,提高开发效率。做后端 Spring MVC 时,就能感觉到一直在处理相同的模板代码,而且还是必须要写的,这点在 OkHttp 上似乎更好点。