okhttp3相关封装配置(一):OkHttpClient的参数配置
来源:互联网 发布:光子 知乎 编辑:程序博客网 时间:2024/06/18 04:21
在Android开发框架中,比较重要的一个模块,就是网络请求模块。一个封装比较好的网络请求框架,会让开发者在发送请求和处理回调都十分方便。这篇文章就围绕着使用比较广泛的okhttp3来写,声明一下,本人不是大神,所以封装的并不完善,只是想给大家共享一下这个小小的成果。
我打算写3篇文章来介绍我是怎么封装okhttp3这个框架的,就是围绕着OkHttpClient, request, callback这三个主题来写。
本篇文章来配置OkHttpClient
废话不多说,OkHttpClient是通过OkHttpClient.Builder来配置参数的。
OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder();
先来配置比较基础的参数,看代码:
okHttpBuilder.connectTimeout(TIME_OUT, TimeUnit.SECONDS); okHttpBuilder.readTimeout(TIME_OUT, TimeUnit.SECONDS); okHttpBuilder.writeTimeout(TIME_OUT, TimeUnit.SECONDS); //允许请求重定向,默认是true okHttpBuilder.followRedirects(true);
超时时间限制以及是否允许重定向,这个根据你项目的需要自行修改。
接下来配置的稍微有些复杂,不过在网上也可以找到很多资源,就是添加https的支持,看代码:
okHttpBuilder.hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String s, SSLSession sslSession) { //支持所有类型https请求 return true; } }); okHttpBuilder.sslSocketFactory(HttpsUtils.initSSLSocketFactory(),HttpsUtils.initTrustManager());
我支持所有https请求,如果服务端有特殊要求,需要根据服务端来进行相应的配合和联调。HttpsUtils是我自己封装的工具类,其实就一个普通的Java类,initSSLSocketFactory()和initTrustManager()是两个静态方法,如果你的项目没什么特殊要求,就按照我的写就行,看代码:
public static SSLSocketFactory initSSLSocketFactory() { //2.生成SSLContext(加密上下文) SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("SSL"); //与服务器保持一致,SSL算法或者TSL算法。 X509TrustManager[] xTrustArray = new X509TrustManager[] {initTrustManager()}; sslContext.init(null, xTrustArray, new SecureRandom()); } catch (Exception e) { e.printStackTrace(); } return sslContext.getSocketFactory(); }
public static SSLSocketFactory initSSLSocketFactory() { //2.生成SSLContext(加密上下文) SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("SSL"); //与服务器保持一致,SSL算法或者TSL算法。 X509TrustManager[] xTrustArray = new X509TrustManager[] {initTrustManager()}; sslContext.init(null, xTrustArray, new SecureRandom()); } catch (Exception e) { e.printStackTrace(); } return sslContext.getSocketFactory(); }
配置了这些之后,基本上就可以生成OkHttpClient来使用了,就我们这个builder来生成,看代码:
mOkHttpClient = okHttpBuilder.build();
在此说明一下,生成OkHttpClient这个步骤,执行一次就行了,所以大家要么选择单例模式,要么写在静态代码块中。
通过OkHttpClient来发送请求也很简单,通过调用newCall()方法,传入request对象就行,至于是get方法还是post方法,是通过对request对象的配置来决定的,看代码:
Call call = mOkHttpClient.newCall(request);call.enqueue(callback);return call;
调用newCall()方法后,会返回一个call对象,调用这个对象的enqueue()方法传入callback,就可以添加回调了。
为什么要返回这个call对象?
我相信大家在开发的时候都遇到过这种情况,请求没有返回的时候,就点击返回键将Activity销毁了。
通过返回的call对象,我们可以在Activity的onDestroy()方法中写上call.cancel(),顾名思义,这样我们就可以自己取消这个请求了。
后续我会分别针对request和callback再进行进一步的封装和配置,最终实现一套完整的针对OkHttp3的封装。
- okhttp3相关封装配置(一):OkHttpClient的参数配置
- okhttp3相关封装配置(二):Request对象
- okhttp3相关封装配置(三):Callback封装,添加onStart()和onFinish()回调方法
- Retrofit的简单实用,配置okhttpclient
- android网络请求组件(一)OkHttp3的封装使用
- 优雅设计封装基于Okhttp3的网络框架(一):Http网络协议与Okhttp3解析
- NoClassDefFoundError: okhttp3.OkHttpClient$Builder
- Android Retrofit 2.0 配置OkHttpClient
- 无聊的相关配置参数
- OkHttp3的简单封装
- OkHttp3 的封装
- OKHTTP3的封装
- android okhttp3的封装
- OKHttp3初始化与配置
- OkHttp3下配置缓存
- iBatis2 配置相关参数
- ResourceManager相关配置参数
- ResourceManager相关配置参数
- 处理服务器参数中有数组参数(AFN框架)
- centos7安装mongodb并添加服务启动
- Python的元组被设计成不可变的影响
- 从菜鸡到咸鱼(二)
- 静态成员变量静态代码块和构造方法的执行顺序
- okhttp3相关封装配置(一):OkHttpClient的参数配置
- 模拟实现vcetor库
- ConcurrentLinkedHashMap设计与代码解析
- 中国独立游戏简史
- 表格内外边框属性测试
- General Thread States
- Java基础知识-9、对象继承和多态
- 2017-11-28
- Matlab中计算程序运行时间的三种方法