Это тип данных, который я пытаюсь пройти < /p>
Код: Выделить всё
data class UserData(
@SerializedName("username")
val username : String,
@SerializedName("email")
val email : String,
@SerializedName("password")
val password : String
)
Код: Выделить всё
object RetrofitHelper {
val baseUrl = "http:///api/include/"
fun getInstance(): Retrofit {
val httpLoggingInterceptor: HttpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.build()
val gson = GsonBuilder()
.setLenient().create()
return Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(okHttpClient)
.build()
}
}
Код: Выделить всё
@POST("sol_register.php")
fun registerUser(@Body userdata : UserData) : Call
Код: Выделить всё
val query = RetrofitHelper.getInstance().create(AccessApi::class.java)
Log.i("Values", event.userData.toString())
val call: Call = query.registerUser(event.userData)
call.enqueue(object : Callback {
override fun onFailure(call: Call, error: Throwable) {
Log.d("onFailure", error.message.toString())
}
override fun onResponse(call: Call, response: Response) {
val result = response.body()
Log.d("onResponse", response.code().toString())
result?.toString()?.let { Log.i("Result", it) }
}
})
< /code>
logcat правильно распечатывает значения userdata, но ошибка, которую я получаю от сервера, заключается в том, что все значения являются нулевыми. Следующая реализация, она отлично работает. < /p>
Изменение интерфейса API на: < /p>
@FormUrlEncoded
@POST("sol_register.php")
fun registerUser(
@Field("username") username: String,
@Field("email") email: String,
@Field("password") password: String
): Call
< /code>
Затем измените способ выполнения вызова: < /p>
val call: Call = query.registerUser(
event.userData.username,
event.userData.email,
event.userData.password
)
Подробнее здесь: https://stackoverflow.com/questions/793 ... ta-is-null