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总结(一)--简单使用
- 网络请求框架 okhttp 简单的使用总结(一)
- okhttp的简单使用(一)
- Okhttp的简单介绍和使用(一)
- Okhttp的简单介绍和使用(一)
- OkHttp Wiki翻译(一)使用OkHttp
- Okhttp的简单介绍和使用(一)
- OKHttp通信使用(一)
- Okhttp源码简单解析(一)
- 天气预报项目学习总结(- ButterKnife - Retrofit 2.0(okhttp) - Rxjava - Jackson - Ormlite - Mosby简单使用总结)
- (4.2.36.1)HTTP之OkHttp(一): Okhttp使用详解
- OkHttp使用(一)基本使用
- OkHttp使用(一)基本使用
- OkHttp使用(一)基本使用
- OkHttp使用(一)基本使用
- OkHttp简单使用(未封装)
- OkHttp的简单使用
- OKHttp的简单使用
- 18至今,学习Linux让我快速成长的三件事
- 免费api接口分享
- Eclipse使用初始化配置
- intelliJ IDEA maven打包时提示系统资源不足
- 链表中添加一个节点和删除一个节点
- OkHttp总结(一)--简单使用
- [ShellExtension]图标扩展-IShellIconlayIdentifier实现
- SpringMVC配置文件
- linux vi(vim)常用命令汇总(转)
- 十三周 项目1(2)
- 文章标题
- 日常记录-代码中Background后Padding 失效
- 天使轮为它融资1000万,甚至入驻滴滴专车?事实上它竟是...
- 稳了!小米7将搭载骁龙845 雷军:请期待明年“与众不同”的小米