如何在 Kotlin 中发出 API 请求?

新手上路,请多包涵

一般来说,我对 Kotlin 和 API 非常陌生,找不到使用这种语言创建 API 请求的语法。我正在创建网站的移动版本,因此我正在使用 Android Studio 为已经建立的后端创建新的 UI。创建请求的步骤和语法是什么?任何帮助都深表感谢。

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

阅读 952
2 个回答

将 Android Studio 设置为使用 Kotlin 后,进行 REST 调用非常简单,并且与 Java 的逻辑几乎相同。


下面是一个使用 OkHttp 进行 REST 调用的示例:

构建.gradle

 dependencies {
    //...
    implementation 'com.squareup.okhttp3:okhttp:3.8.1'
}

AndroidManifest.xml

 <uses-permission android:name="android.permission.INTERNET" />

MainActivity.kt

 class MainActivity : AppCompatActivity() {

    private val client = OkHttpClient()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        run("https://api.github.com/users/Evin1-/repos")
    }

    fun run(url: String) {
        val request = Request.Builder()
                .url(url)
                .build()

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


以下是其他库的一些更复杂的示例:

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

您可以使用 RetrofitAsyncTask ,例如 AsyncTask

 class getData() : AsyncTask<Void, Void, String>() {
    override fun doInBackground(vararg params: Void?): String? {
    }

    override fun onPreExecute() {
        super.onPreExecute()
    }

    override fun onPostExecute(result: String?) {
        super.onPostExecute(result)
    }
}

对于 Retrofit 检查这个可怕的 教程

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

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