修改响应体返回null



我已经被这个问题困扰了一段时间了,我似乎找不到问题,尤其是当我所做的一切都是按照网上的指南。

我正在尝试发出POST请求,并在交换中收到响应:

请求主体:

{
"Email":"test@gmail.com",
"firebaseUid":"Test_UID",
"IsBanned":1
}

反应身体:'

{
"Email": "test@gmail.com",
"UserId": 7
}

所以基本上每当我向/users/提交创建帐户的请求时,我都会得到返回的email和UserId。

data class UserLogin(
@SerializedName("Email") val Email: String,
@SerializedName("UserId") val UserId: Int?,
@SerializedName("IsBanned") val IsBanned: Boolean?,
@SerializedName("firebaseUid") val firebaseUid: String?
)

object ServiceBuilder {
private val client = OkHttpClient.Builder().build()
private val retrofit = Retrofit.Builder()
.baseUrl("http://10.0.2.2/8000/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
fun<T> buildService(service: Class<T>): T{
return retrofit.create(service)
}
}
class RestApiService {
fun addUser(userData: UserLogin, onResult: (UserLogin?) -> Unit){
val retrofit = ServiceBuilder.buildService(RestApi::class.java)
retrofit.addUser(userData).enqueue(
object : Callback<UserLogin> {
override fun onFailure(call: Call<UserLogin>, t: Throwable) {
Log.d("Failed retrofit",t.message.toString())
onResult(null)
}
override fun onResponse( call: Call<UserLogin>, response: Response<UserLogin>) {
val addedUser = response.body()
onResult(addedUser)
}
}
)
}
}

onFailure似乎没有在控制台上打印任何东西。我从像这样的按钮调用API, Email和UserId都因为某种原因返回null:

val apiService = RestApiService()
val userInfo = UserLogin(UserId = null,firebaseUid = "TestTestTest", IsBanned = false, Email = "test@gmail.com");
apiService.addUser(userInfo){
Log.d("Retrofit user added", it?.Email.toString())
}

I tried to:

  • 设置数据类成员的默认值。
  • 尝试检查响应是否成功,如果不成功则打印errorBody。这也没有帮助。我得到不可读的错误,如$1@9afe35d代替。

当我用POSTMAN手动做请求时,一切似乎都很好。

结果是代码中没有任何内容。我只是以错误的方式输入端口,并使用/而不是:

private val retrofit = Retrofit.Builder()
.baseUrl("http://10.0.2.2:8000/") // this
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()

最新更新