kotlin 中的 HTTP GET 请求
HTTP GET request in kotlin
我需要一个 Kotlin 中的 HTTP GET 请求示例。我有一个数据库,我已经执行了 API 以将信息获取到服务器。
作为最终结果,我需要在“editText”内的 android 布局中显示 API json。
建议?我已经有了这个代码:
fun fetchJson(){
val url = "http://localhost:8080/matematica3/naoAutomatica/get"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call?, response: Response?) {
val body = response?.body()?.string()
println(body)
}
override fun onFailure(call: Call?, e: IOException?) {
println("Falhou")
}
}
}
创建一个 EditText 成员变量,以便您可以在回调函数中访问它
例如
var editText: EditText? = null
在 activity
的 onCreate 中初始化它
editText = findViewById<EditText>(R.id.editText)
像这样在你的回电中设置文本
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call?, e: IOException?) {
println("${e?.message}")
}
override fun onResponse(call: Call?, response: Response?) {
val body = response?.body()?.string()
println(body)
editText?.text = "${body.toString()}" \ or whatever else you wanna set on the edit text
}
})
您可以使用 kohttp 库。它是一个 Kotlin DSL HTTP 客户端。它支持 square.okhttp 的特性,并为它们提供清晰的 DSL。 KoHttp 异步调用由协程提供支持。
val response: Deferred<Response> = "http://localhost:8080/matematica3/naoAutomatica/get".asyncHttpGet()
或用于更复杂请求的 DSL 函数
val response: Response = httpGet {
host = "localhost"
port = 8080
path = "/matematica3/naoAutomatica/get"
}
您可以在 docs
中找到更多详细信息
因此,您与 'callbacks' 的通话将如下所示
val response: Deferred<Response> = "http://localhost:8080/matematica3/naoAutomatica/get".asyncHttpGet()
try {
response.await().use {
println(it.asString())
}
} catche (e: Exception) {
println("${e?.message}")
}
要使用 Gradle 获取它,请使用
compile 'io.github.rybalkinsd:kohttp:0.10.0'
我需要一个 Kotlin 中的 HTTP GET 请求示例。我有一个数据库,我已经执行了 API 以将信息获取到服务器。 作为最终结果,我需要在“editText”内的 android 布局中显示 API json。 建议?我已经有了这个代码:
fun fetchJson(){
val url = "http://localhost:8080/matematica3/naoAutomatica/get"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call?, response: Response?) {
val body = response?.body()?.string()
println(body)
}
override fun onFailure(call: Call?, e: IOException?) {
println("Falhou")
}
}
}
创建一个 EditText 成员变量,以便您可以在回调函数中访问它
例如
var editText: EditText? = null
在 activity
的 onCreate 中初始化它editText = findViewById<EditText>(R.id.editText)
像这样在你的回电中设置文本
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call?, e: IOException?) {
println("${e?.message}")
}
override fun onResponse(call: Call?, response: Response?) {
val body = response?.body()?.string()
println(body)
editText?.text = "${body.toString()}" \ or whatever else you wanna set on the edit text
}
})
您可以使用 kohttp 库。它是一个 Kotlin DSL HTTP 客户端。它支持 square.okhttp 的特性,并为它们提供清晰的 DSL。 KoHttp 异步调用由协程提供支持。
val response: Deferred<Response> = "http://localhost:8080/matematica3/naoAutomatica/get".asyncHttpGet()
或用于更复杂请求的 DSL 函数
val response: Response = httpGet {
host = "localhost"
port = 8080
path = "/matematica3/naoAutomatica/get"
}
您可以在 docs
中找到更多详细信息因此,您与 'callbacks' 的通话将如下所示
val response: Deferred<Response> = "http://localhost:8080/matematica3/naoAutomatica/get".asyncHttpGet()
try {
response.await().use {
println(it.asString())
}
} catche (e: Exception) {
println("${e?.message}")
}
要使用 Gradle 获取它,请使用
compile 'io.github.rybalkinsd:kohttp:0.10.0'