我已经被这个问题困扰了一段时间了,我似乎找不到问题所在,尤其是当我所做的只是在网上遵循一个指南的时候。
我尝试发出POST请求,并在交换中收到响应:
请求正文:
{
"Email":"test@gmail.com",
"firebaseUid":"Test_UID",
"IsBanned":1
}
响应正文:"'
{
"Email": "test@gmail.com",
"UserId": 7
}
因此,基本上,每当我向/users/提交创建帐户的请求时,我都会得到返回的电子邮件和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())
}
`
我竭力想:
- 设置数据类成员的默认值。
- 尝试检查响应是否成功,如果不成功,则打印errorBody。这也没有帮助。我得到了
$1@9afe35d
之类的不可读错误。
当我用 Postman 手动处理请求时,一切似乎都工作正常。
1条答案
按热度按时间smtd7mpg1#
原来代码里什么都没有,只是输入端口的方式不对,用了
/
而不是: