Maxim
- if you don't go for a walk,you will think this is the world.
简介
HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。
OkHttp是一个高效的HTTP客户端
支持Http和Http/2,可适用于Android以及Java应用的网络请求客户端
特性
- 支持HTTP/2,允许共享同一个socket连接
- 连接池的存在可以有效减少请求的所需的准备工作
- GZIP压缩减少响应数据的大小
- 自动缓存响应数据,可以避免每次都发送完全重复的请求
OkHttp可以在请求出现问题时 坚守 灵活处理:针对于常见的连接问题,OkHttp会默认自动帮应用做修复处理。如果你的服务器有多个IP地址,OkHttp将会在请求失败时,不断尝试连接另外的IP地址。当服务器同时支持IPv4+IPv6,或者主机服务器出现数据故障时,这是非常有用的。如果握手失败,OkHttp会自动初始化一个带有TLS(SNI, ALPN)协议的新连接向支持TLS 1.0的服务器再次发起请求。
note: OkHttp 支持 Android 2.3 及以上版本Android平台, 对于 Java, JDK 1.7及以上.
使用配置
GRADLE
modle下build.gradle配置添加如下依赖后进行同步
dependencies {
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okio:okio:1.7.0'
}
添加权限
AndroidManifest.xml添加权限:网络,文件读写
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
okHttp的基本用法
- OkHttp3发送请求步骤
创建OkHttpClient
创建请求体FormBody(post)
创建Request
获取Call
发送同步或异步请求 - OkHttp3发送GET请求
同步GET请求
测试接口
http://litchiapi.jstv.com/api/GetFeeds
http://litchiapi.jstv.com/api/GetFeeds?column=3&PageSize=10&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41
execute
异步GET请求
enqueue
-
OkHttp3发送POST请求
同步POST请求
execute
异步POST请求
enqueue -
文件上传的原理
表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:
- application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式。
- multipart/form-data:这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。
- text/plain:这种方式主要适用于直接通过表单发送邮件的方式。
6,OkHttp3进行多文件上传并且携带表单字段
POST请求的基础上,创建一个MultipartBody
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)//设置数据类型
.addFormDataPart("username", "zxn")//添加参数
.addFormDataPart("file","1.txt", RequestBody.create(MultipartBody.FORM, file))//变量,文件名,请求体
.build();
网友评论