我正在尝试使用改版在我的应用程序上实现用户注册,但是我一直得到这个错误不确定是什么错误,java.lang.IllegalStateException:应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY
这是邮递员的回复
{
"isSuccessful": true,
"message": "successful",
"user": {
"name": "Jackline Jazz",
"email": "jackijazz@gmail.com",
"phone": "000000"
}
}
我有两个模型类User模型类
data class User(
val name: String,
val email:String,
val phone:String
data class LoginResponse(
val isSuccessful:Boolean,
val message: String,
val user: List<User>
object RetrofitClient {
private const val BASE_URL = "http://10.0.2.2:7000/"
val instance: RetrofitApi by lazy {
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
retrofit.create(RetrofitApi::class.java)
}
@FormUrlEncoded
@POST("users/register")
fun userRegister(
@Field("name") name: String,
@Field("email") email: String,
@Field("password") password: String,
@Field("confirmPassword") confirmPassword: String
): Call<LoginResponse>
和我的register类
RetrofitClient.instance.userRegister(name, email, password, confirmPassword)
.enqueue(object : Callback<LoginResponse> {
override fun onFailure(call: Call<LoginResponse>, t: Throwable) {
Toast.makeText(applicationContext, t.message, Toast.LENGTH_LONG).show()`
}
override fun onResponse(call: Call<LoginResponse>, response: Response<LoginResponse>) {
if (response.body()?.isSuccessful!!){
val intent = Intent(applicationContext, MainActivity::class.java)
startActivity(intent)
}else{
Toast.makeText(applicationContext, response.body()?.message, Toast.LENGTH_LONG).show()
}
}
})
}
}
如果可能的话有人帮我实现Kotlin coroutines
在上一个问题中,您访问了users/login
endpoint。您创建了一个loginresponse
来建模来自服务器的响应。在那里,users/login
返回一个列表
,因此必须这样设置loginresponse
。
现在,您正在访问users/register
endpoint...但您仍在尝试使用loginresponse
。从您的JSON中可以看到,您正在从服务器获得不同的JSON,在服务器中只有一个用户。因此,您需要一个不同的响应类(例如,registerresponse
)来建模这个新响应:
data class RegisterResponse(
val isSuccessful:Boolean,
val message: String,
val user: User
)
@FormUrlEncoded
@POST("users/register")
fun userRegister(
@Field("name") name: String,
@Field("email") email: String,
@Field("password") password: String,
@Field("confirmPassword") confirmPassword: String
): Call<RegisterResponse>
拜托,我有麻烦了。我想获取web api()上的所有实体
我正在尝试使用改版在我的应用程序上实现登录,但是我一直得到这个错误不确定是什么错误,java.lang.IllegalStateException:应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY 这是邮递员的回复 和我的登录类
有改装API 附注。很抱歉可能的语法错误。
我已经在StackOverflow中多次看到这个问题。但这些答案没有解决我的问题,我对reverfit是新的。我将reverfit用于我的登录接口。我将发送用户名、密码,然后响应将是数组中的两个令牌。当我尝试登录时,日志猫显示 请求 发帖:表单-已注册 模型类 UserResponse.java 接口 然后我想要获得。 我已按如下所示编辑并尝试获取。然后在com.android.app.myapp