【发布时间】:2018-12-31 18:41:19
【问题描述】:
我试图从https://github.com/users 获取 json。 我想显示用户名:yehezkiell like https://github.com/yehezkiell。 改造显示成功结果,但始终返回 null。我是这次改造的新手,请帮忙
这是我的代码
val postService = DataRepository.create()
postService.getUser("yehezkiell").enqueue(object : Callback<Users>{
override fun onFailure(call: Call<Users>?, t: Throwable?) {
Log.e("retrofitnya","gagal ${t}")
}
override fun onResponse(call: Call<Users>?, response: Response<Users>?) {
Log.e("retrofitnya","berhasil")
val data = response?.body()
Log.e("retrofitnya","berhasil ${data?.name}")
}
})
改造实例
interface RetrofitInstance {
@GET("users/{username}")
fun getUser(@Path("username") username:String ): Call<Users>
}
数据仓库
object DataRepository {
fun create(): RetrofitInstance {
val retrofit = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("https://github.com")
.build()
return retrofit.create(RetrofitInstance::class.java)
}
}
Users.kt
open class Users {
@SerializedName("name")
@Expose
open var name: String? = null
@SerializedName("username")
@Expose
open var username: String? = null
@SerializedName("email")
@Expose
open var email: String? = null
}
【问题讨论】:
-
Users长什么样子? Gson 可能有问题。 -
仅对用户名、电子邮件和 ID 进行海化
-
在此处粘贴 log cat stacktrace
-
没有日志先生,它只是从这里返回 null Log.e("retrofitnya","berhasil ${data?.name}")
-
如果你声明
Users类只包含username并且它实际上有一个name属性,这可能是配置错误。还有一个问题:data也为空吗?
标签: api kotlin retrofit github-api