带有 Kotlin 的 Android 中的 HTTP 请求

新手上路,请多包涵

我想使用 POST 方法进行登录验证并使用 GET 方法获取一些信息。

我已经有我之前项目的 URL、服务器用户名和密码。

原文由 Rajkumar K 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 865
2 个回答

对于 Android, Volley 是一个很好的起点。对于所有平台,您可能还想查看 ktor 客户端或 http4k ,它们都是很好的库。

但是,您也可以使用标准 Java 库,例如 java.net.HttpURLConnection 这是 Java SDK 的一部分:

 fun sendGet() {
    val url = URL("http://www.google.com/")

    with(url.openConnection() as HttpURLConnection) {
        requestMethod = "GET"  // optional default is GET

        println("\nSent 'GET' request to URL : $url; Response Code : $responseCode")

        inputStream.bufferedReader().use {
            it.lines().forEach { line ->
                println(line)
            }
        }
    }
}

或更简单:

 URL("https://google.com").readText()

原文由 s1m0nw1 发布,翻译遵循 CC BY-SA 4.0 许可协议

仅使用具有最少代码的 标准库

 thread {
        val json = try {
            URL(url).readText()
        } catch (e: Exception) {
            return@thread
        }
        runOnUiThread { displayOrWhatever(json) }
    }

这会 在新线程上 启动 GET 请求,让 UI 线程响应用户输入。但是,我们只能从主/UI 线程修改 UI 元素,所以我们实际上需要一个 runOnUiThread 块来向我们的用户显示结果。这将我们的显示代码排入队列,以便很快在 UI 线程上运行。

try/catch 在那里,所以如果您在手机互联网关闭的情况下发出请求,您的应用程序不会崩溃。随意添加您自己的错误处理(例如显示 Toast)。

.readText() 不是 java.net.URL 类的一部分,而是 Kotlin 扩展方法,Kotlin 将此方法“粘合”到 URL 。这对于普通的 GET 请求已经足够了,但是对于更多的控制和 POST 请求,您需要类似 Fuel 库的东西。

原文由 xjcl 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题