Android 请求封装 okhttp
时间: 2025-01-13 09:56:15 浏览: 49
### 封装 OkHttp 请求
为了简化 Android 应用中频繁使用的 HTTP 请求操作,可以通过 Kotlin 对 `OkHttp` 进行封装。下面展示了一个简单的 `HttpUtil` 类实现方式:
#### 创建 HttpUtil 工具类
```kotlin
import okhttp3.*
object HttpUtil {
private val client = OkHttpClient()
/**
* 发送 GET 请求并返回字符串形式的结果。
*/
fun sendGetRequest(url: String, callback: Callback) {
val request = Request.Builder()
.url(url)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
try {
val responseData = response.body?.string()
// 调用回调接口的成功方法
callback.onResponse(call, response)
} catch (e: Exception) {
e.printStackTrace()
// 处理异常情况下的错误信息
callback.onFailure(call, e)
}
}
}
override fun onFailure(call: Call, e: IOException) {
// 当请求失败时触发此函数
callback.onFailure(call, e)
}
})
}
}
```
该工具类提供了一种便捷的方式来执行异步的 GET 请求,并通过传入自定义的 `Callback` 来接收服务器响应的数据[^1]。
#### 定义回调接口
为了让使用者能够方便地获取到请求完成后的数据,还需要定义一个用于监听网络请求状态变化的接口:
```kotlin
interface HttpCallback {
fun onSuccess(responseBody: String?)
fun onError(e: Exception?)
}
```
这样就可以在调用方轻松设置成功的处理逻辑以及捕获可能发生的任何异常状况了[^2]。
#### 使用示例
假设现在有一个场景是要向指定地址发起带有查询参数的 GET 请求,则可以在 Activity 或者 Fragment 中像下面这样做:
```kotlin
val baseUrl = "https://jsonplaceholder.typicode.com/posts"
val userId = "1"
// 构建完整的URL路径
val urlWithParams = "$baseUrl?userId=$userId"
// 执行GET请求
HttpUtil.sendGetRequest(urlWithParams, object : HttpCallback {
override fun onSuccess(responseBody: String?) {
// 成功收到回复后在此处做进一步解析或UI更新工作
Log.d("TAG", "Response Body: $responseBody")
}
override fun onError(e: Exception?) {
// 出现问题则记录日志或者提示用户重试等措施
Log.e("TAG", "Failed to fetch data.", e)
}
})
```
以上就是基于 OkHttp 的简单封装实例,在实际项目开发过程中可以根据需求扩展更多功能比如 POST 提交表单、上传文件等功能[^3]。
阅读全文
相关推荐


















