使用 OkHttp 在 Kotlin 中发送和接收网络请求
Sending and Receiving Network Requests in Kotlin with OkHttp
我正在使用下面的代码通过 OkHttp 发送和接收网络请求。
在得到响应之前如何知道请求是否发送成功?
例如,我想添加一个跟踪以了解请求已成功发送并且我现在正在等待响应。
val client = OkHttpClient()
val builder = FormBody.Builder()
val formBody = builder.build()
val request = Request.Builder()
.url(url)
.post(formBody)
.build()
val response = client.newCall(request).execute()
val jsonDataString = response.body()?.string()
...
使用事件监听器APIhttps://square.github.io/okhttp/events/
#!/usr/bin/env kotlin
@file:Repository("https://repo1.maven.org/maven2/")
@file:DependsOn("com.squareup.okhttp3:okhttp:4.9.0")
@file:CompilerOptions("-jvm-target", "1.8")
import okhttp3.Call
import okhttp3.EventListener
import okhttp3.OkHttpClient
import okhttp3.Request
val client = OkHttpClient.Builder()
.eventListener(object : EventListener() {
override fun requestBodyEnd(call: Call, byteCount: Long) {
println("requestBodyEnd: $call")
}
override fun responseHeadersStart(call: Call) {
println("responseHeadersStart: $call")
}
})
.build()
val request = Request.Builder()
.url("https://httpbin.org/get")
.build()
val body = client.newCall(request).execute().use {
it.body!!.string()
}
println(body)
示例代码(Intellij 的 Kotlin 脚本)- 名称 example.main.kts
我正在使用下面的代码通过 OkHttp 发送和接收网络请求。 在得到响应之前如何知道请求是否发送成功? 例如,我想添加一个跟踪以了解请求已成功发送并且我现在正在等待响应。
val client = OkHttpClient()
val builder = FormBody.Builder()
val formBody = builder.build()
val request = Request.Builder()
.url(url)
.post(formBody)
.build()
val response = client.newCall(request).execute()
val jsonDataString = response.body()?.string()
...
使用事件监听器APIhttps://square.github.io/okhttp/events/
#!/usr/bin/env kotlin
@file:Repository("https://repo1.maven.org/maven2/")
@file:DependsOn("com.squareup.okhttp3:okhttp:4.9.0")
@file:CompilerOptions("-jvm-target", "1.8")
import okhttp3.Call
import okhttp3.EventListener
import okhttp3.OkHttpClient
import okhttp3.Request
val client = OkHttpClient.Builder()
.eventListener(object : EventListener() {
override fun requestBodyEnd(call: Call, byteCount: Long) {
println("requestBodyEnd: $call")
}
override fun responseHeadersStart(call: Call) {
println("responseHeadersStart: $call")
}
})
.build()
val request = Request.Builder()
.url("https://httpbin.org/get")
.build()
val body = client.newCall(request).execute().use {
it.body!!.string()
}
println(body)
示例代码(Intellij 的 Kotlin 脚本)- 名称 example.main.kts