一、技术概述
OkHttp是一款开源的网络框架,封装了一个高性能的http请求库。OkHttp支持封装请求和处理响应,使用OkHttp网络框架可以更方便地处理安卓端的网络请求和前后端的数据交互。
二、技术详述
1、在app目录下的build.gradle中添加依赖。implementation 'com.squareup.okhttp3:okhttp:4.8.1'
这里使用的是OkHttp 4.x,当然使用OkHttp 3.x也是可以的。
2、创建OkHttpClient对象。OkHttpClient client = new OkHttpClient();
上述创建创建方法采用默认配置,即默认请求连接超时时间10s,读写超时时间10s,连接不成功会自动再次连接。如果需要另外配置,可以通过Builder的方式来自己定义一个OkHttpclient。
public final OkHttpClient = new OkHttpClient.Builder()
.addInterceptor(new HttpLoggingInterceptor())
.cache(new Cache(cacheDir,cacheSize))
.等等配置
.build();
3、构造Request对象并由OkHttpClient提交请求。
其中JSON为Activity类中的常量public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
,json为组装好数据的JSONObject对象,请求头添加token作为页面访问时的身份验证。
4、获得Response对象并进行分析处理。
其中响应主体为含status、message、data字段的json格式的数据。
流程图
三、技术使用中遇到的问题和解决过程
问题描述:Android 9.0以上系统,HTTP网络访问请求受限,HTTPS无影响。
解决过程:1、在项目的res目录下创建xml目录,并在xml目录下新建network_security_config.xml文件,采用Android7.0+的默认网络配置:
2、修改项目的AndroidManifest.xml,在根目录下增加<uses-permission android:name="android.permission.INTERNET" />
。
3、修改项目的AndroidManifest.xml,在application中增加android:networkSecurityConfig="@xml/network_security_config"
。
四、总结
okhttp网络框架不仅使用上方便快捷,而且稳定性和安全性表现好,适合于目前安卓端的网络编程。
五、列出参考文献、参考博客(标题、作者、链接)
Okhttp3基本使用
【Android】OkHttp3总结与封装
从 http协议角度解析okhttp