Retrofit基本用法

创建Retrofit实例

private fun getRetrofit(): Retrofit {
        return Retrofit.Builder()
            .baseUrl("https://api.github.com/")
            .build()
    }

将Http Api 转换为Kotlin接口

interface GitHubService {
        /**
         * Retrofit 是对okhttp的进一步封装
         * @see @GET 声明GET请求
         * @see @Path("id") 中 id 将替换 @GET 中的 {id} 
         *          --> baseUrl/users/user/repos
         *          --> https://api.github.com/users/user/repos
         * @see RetrofitModel.getUser 中注释
         * @see Call 是okhttp ResponseBody 的类型
         */
        @GET("users/{user}/repos")
        fun listRepos(@Path("user") user: String): Call
    }

请求网络

    /**
     * url:https://api.github.com/users/lin314/repos
     */
    fun getUser() {
        getRetrofit()
            .create(GitHubService::class.java)
            .listRepos("lin314")
            .enqueue(object : Callback {
                override fun onFailure(call: Call, t: Throwable) {
                    Timber.d("#############$t")
                }

                override fun onResponse(call: Call, response: Response) {
                    try {
                        val result = response.body()?.string() ?: ""
                        Timber.d("#############$result")
                    } catch (e: Exception) {
                        Timber.d("#############${e.message}")
                    }
                }
            })
    }

你可能感兴趣的:(Retrofit基本用法)