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

最近在做一些网络知识的梳理和总结,是时候在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简单结构

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值