OkHttp怎樣配合協(xié)程使用

小樊
131
2024-06-18 14:59:59

在使用OkHttp配合協(xié)程使用時(shí),可以使用OkHttp的異步請(qǐng)求方法和Kotlin協(xié)程來(lái)實(shí)現(xiàn)非阻塞的網(wǎng)絡(luò)請(qǐng)求。以下是一個(gè)簡(jiǎn)單的示例代碼:

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import okhttp3.OkHttpClient
import okhttp3.Request

fun main() {
    val client = OkHttpClient()

    runBlocking {
        withContext(Dispatchers.IO) {
            val request = Request.Builder()
                .url("https://www.example.com")
                .build()

            val response = client.newCall(request).execute()

            if (response.isSuccessful) {
                val responseBody = response.body?.string()
                println("Response: $responseBody")
            } else {
                println("Request failed")
            }
        }
    }
}

在上面的示例中,我們使用runBlocking創(chuàng)建一個(gè)協(xié)程作用域,并在withContext(Dispatchers.IO)中調(diào)用OkHttp的異步請(qǐng)求方法execute()來(lái)發(fā)起網(wǎng)絡(luò)請(qǐng)求。在這個(gè)協(xié)程作用域內(nèi),我們可以同步地處理網(wǎng)絡(luò)請(qǐng)求的響應(yīng),而不會(huì)阻塞主線程。

0