Android中OkHttp3的使用

目录

概述

是目前Android使用最广泛的网络框架。

上图很清晰了,这里只做一个简单的介绍。

1.创建一个OkHttpClient对象,

2.创建request和requestBody(如果有)

3.利用request对象创建call对象。选择是同步还是异步请求。

4.代码上在上一步就可以得到响应结果,工作流程是进入分发器完成任务的调配,分发器维护请求队列和线程池。

5.进入拦截器

6.服务端返回响应结果

使用

引入依赖

groovy 复制代码
 implementation 'com.squareup.okhttp3:okhttp:4.9.0'

加网络权限

xml 复制代码
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

请求方式都是类似的,特殊一点的是post请求上传的参数可能有多种形式,如表单、json、文件等。我们以异步get请求为代码示例:

kotlin 复制代码
fun getAsync(urlStr: String) {
	try{
       Thread{
       		val client = OkHttpClient()
            val request = okhttp3.Request.Builder().get().url(urlStr).build()
            client.newCall(request).enqueue(object: okhttp3.Callback {
            		override fun onFailure(call: okhttp3.Call, e: IOException) {
        
                    }
                    override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) {
                        val result = response.body?.string()
                        Log.d("t","url = $urlStr")
                        Log.d("t", "result = $result")
                        }
                    })
            }
            }catch (e: Exception){ }

        }

配置

自定义拦截器,有网络拦截器addInterceptor和应用拦截器addNetworkInterceptor,addInterceptor优先级更高。

kotlin 复制代码
val client = OkHttpClient()
	.newBuilder()
	.addInterceptor(object : Interceptor {
 override fun intercept(chain: Interceptor.Chain): Response {
	val request = chain.request()
	val t1 = System.currentTimeMillis()
	val response = chain.proceed(request)
 	val t2 = System.currentTimeMillis()
 	Log.d("tian","Processing time = ${t2 - t1}")
return response
	}
 })
	.build()

参考

https://blog.csdn.net/weixin_63357306/article/details/128918616

相关推荐
Wang's Blog4 小时前
Java 服务器: Linux-yum在线安装与lrzsz文件传输
java·服务器
mmsx4 小时前
MapLibre 实战 13|让比例尺显示 100m 而不是 347.2m:屏幕距离换算与两个易错点
android·前端·app
邪修king4 小时前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
Java内核笔记4 小时前
Spring Boot 4 与 Spring AI 2.0 深度集成:ChatClient、Advisor 链与 MCP(源码级实战)
java·后端
可爱的小小小狼4 小时前
【无标题】
java·算法
用户3126874877204 小时前
Java SPI 到底怎么实现动态扩展的?从 ServiceLoader 到 Dubbo SPI 全链路拆解
java
新时代农民工~5 小时前
【双机高可用部署方案-前后端部署】
java·nginx·springboot
企业数字化笔记5 小时前
固定资产还有借用记录能报废吗?Java前置检查、停止折旧与SQL验收
java·开发语言·sql
飞虹地星海5 小时前
从零到一跑通苍穹外卖:一个大二学生的暑假项目复盘
java
她的男孩5 小时前
账号锁定配了"错 4 次锁 30 分钟",我连错 100 次一次没锁上:扒完 4091 行认证源码,找到 5 个坑
java·后端·架构