gpt4 book ai didi

api - 改造 2 获取 Github 用户 API 总是返回 null

转载 作者:行者123 更新时间:2023-12-02 13:37:03 28 4
gpt4 key购买 nike

我试图从 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)
}
}

用户.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响应后立即对象,我们应该做这样的事情吗? :

  • 首先将其反序列化为纯字符串。
  • interface RetrofitInstance {

    @GET("users/{username}")
    fun getUser(@Path("username") username: String): Call<String>

    }
  • 只需记录该字符串以显示我们真正得到的结果。
  • override fun onResponse(call: Call<String>?, response: Response<String>?) {
    val responseBody = response?.body() ?: ""
    Log.e("retrofitnya","response body as string = ${responseBody}")
    }
  • (如果我们想在此之后将其用作 Users)请手动反序列化它。
  • val user: Users = Gson().fromJson(responseBody, Users::class.java)

    如果不是太 secret ,请告诉我们您如何声明 Users数据对象,例如,这个 Foo 和 Bar。
    data class Foo(
    @SerializedName("bar") val bar: Bar?
    )

    data class Bar(
    @SerializedName("name") val name: String?
    )

    关于api - 改造 2 获取 Github 用户 API 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53976363/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com