OkHttp总结(一)--简单使用

来源:互联网 发布:建筑工程基础知识软件 编辑:程序博客网 时间:2024/05/22 05:01

最近在做一些网络知识的梳理和总结,是时候在Android开发中常用的几个网络框架从源码的角度分析一遍了。首先从OkHttp框架开始分析(基于OkHttp-3.4.1.jar)。

1、OkHttp总结(一)–简单使用
2、OkHttp总结(二)–分发器(Dispatcher)

一、OkHttp的简介

在Android中的SDK中,对于Http网络请求有两种方式:HttpUrlConnection和HttpClient。HttpClient已经在SDK 23以后被废弃掉了,在这里不做讨论。HttpUrlConnection利用Java_JDK中UrlConnection对Http协议做了一次封装。HttpURLConnection是一种多用途、轻量极的客户端Http请求,使用它来进行Http操作,可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。但是在Android 2.2版本之前,HttpURLConnection一直存在着一些令人厌烦的bug。比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。那么我们通常的解决办法就是直接禁用掉连接池的功能, 由于在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,2.3之前使用HttpClient。
OkHttp相对于HttpUrlConnection有几大优势:
(1)OkHttp不仅对Http协议进行了封装,并且支持HTTP2/SPDY和Https等协议;
(2)对所有请求进行统一管理。无论是同步请求还是异步请求都要通过分发器进行统一的分发。并且对于异步请求利用线程池技术,合理利用了资源;
(3)通过拦截器逐步过滤全部请求,并对对应的响应进行初步处理以及重定向处理;
(4)利用连接池技术有序合理的管理所有连接,并相应的复用连接;
(5)基于socket进行网络请求,自动选择合理路径。

二、OkHttp的简单使用

        // 1、构建一个OkHttpClient的对象。        OkHttpClient okHttpClient = new OkHttpClient();        // 2、构建请求(在这里仅使用get和post两种方式)        // 将请求进行封装,包括请求行、请求头和请求方法等。        // a、get方式。默认请求为get方式,所以下面的get()方法可以不去调用。        Request request = new Request.Builder().get().url("URL").build();        // b、post方式。        // 对于表单的请求        RequestBody requestBody = new FormBody.Builder().build();        Request request = new Request.Builder().post(requestBody).url("URL").build();        // 对于文件的请求        RequestBody requestMultipartBody = new MultipartBody.Builder().build();        Request request = new Request.Builder().post(requestMultipartBody).url("URL").build();        // 3、发起请求、获得响应。        // 在OkHttp中主要有两种请求方式,同步方式和异步方式        Response response = null;        // a、同步请求        try {            // 利用response处理响应信息。            response = okHttpClient.newCall(request).execute();        } catch (IOException e) {            e.printStackTrace();        }        // b、异步请求        // 在enqueue()中传入一个请求结果的回调。        okHttpClient.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {             }            @Override            }        });

三、OkHttp的简单结构

在OkHttp中主要由三大部分组成:分发器(dispatcher)、拦截链(责任链、Chains)和连接池(ConnectionPool),后期我们会一个一个详细的介绍。

OkHttp简单结构

原创粉丝点击