如何从Kotlin的api调用函数返回对象?

时间:2020-10-16 16:38:24

标签: api kotlin

我需要进行api调用,并将json响应反序列化为我编写的模型类(QueryRecipesModel)的实例。该函数应返回该实例。我尝试使用okhttp3和gson。

fun queryRecipes(query: String): QueryRecipesModel {
        lateinit var queryRecipesModel: QueryRecipesModel
        val url="https://api.chefkoch.de/v2/recipes/?query=$query"
        val request = Request.Builder().url(url).build()

        val client = OkHttpClient()
        client.newCall(request).enqueue(object: Callback{

            override fun onResponse(call: Call, response: Response) {
                val responsecontent = response.body()?.string()
                val gson = GsonBuilder().create()
                queryRecipesModel = gson.fromJson(responsecontent, QueryRecipesModel::class.java)
            }

            override fun onFailure(call: Call, e: IOException) {
                println("Fail")
            }
        })
    return queryRecipesModel
    }

问题似乎是我初始化queryRecipesModel时采用的入队方法,但是queryRecipes函数无法识别它。而是使用newCall.execute也不起作用。 有任何想法吗?预先感谢。

0 个答案:

没有答案