返回

OKHttp3:实用指南,让网络请求变得简单

Android

使用 OKHttp3 优化您的 Android 网络请求

搭建服务器:一个基础

要全面探索 OKHttp3 的强大功能,您需要一个服务器作为目标。在命令提示符下运行此简单命令:python -m http.server 8000。它将在端口 8000 上启动一个 HTTP 服务器。

网络请求:GET 和 POST

OKHttp3 让网络请求变得轻而易举。使用 GET 请求获取信息,例如:

val client = OkHttpClient()
val request = Request.Builder()
    .url("http://localhost:8000")
    .build()
val response = client.newCall(request).execute()

要发布数据,请使用 POST 请求:

val requestBody = FormBody.Builder()
    .add("username", "admin")
    .add("password", "secret")
    .build()
val request = Request.Builder()
    .url("http://localhost:8000/login")
    .post(requestBody)
    .build()
val response = client.newCall(request).execute()

拦截器:控制请求和响应

拦截器提供了一种强大方式来修改请求和响应。例如,添加授权标头:

val client = OkHttpClient.Builder()
    .addInterceptor(object : Interceptor {
        override fun intercept(chain: Interceptor.Chain): Response {
            val request = chain.request()
            val newRequest = request.newBuilder()
                .addHeader("Authorization", "Bearer token")
                .build()
            return chain.proceed(newRequest)
        }
    })
    .build()

同步与异步:灵活的请求

OKHttp3 支持同步和异步请求。同步请求立即执行,而异步请求在后台运行,带来更大的灵活性。异步请求示例:

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) {}
    override fun onResponse(call: Call, response: Response) {}
})

结论:提升您的网络能力

OKHttp3 是 Android 网络开发的必备工具。通过掌握其基本原理,您可以构建强大的网络应用程序,提供顺畅的用户体验。

常见问题解答

1. 如何使用 OKHttp3 添加自定义标头?

使用 addHeader() 方法。请参阅拦截器示例。

2. 如何设置请求超时?

调用 newBuilder() 并使用 readTimeout()writeTimeout() 设置超时。

3. 如何取消异步请求?

调用 enqueue() 返回的 Call 对象上的 cancel() 方法。

4. 如何处理 JSON 响应?

使用 Response.body.string() 获取响应正文并使用 JSON 解析库对其进行解析。

5. OKHttp3 是否支持 HTTP/2?

是的,通过启用 OkHttpClient.Builder.protocols() 方法。