Я новичок в отношении Котлина.Мой первый проект - потреблять api отдыха.Я уже сделал это с помощью модернизации.Но у меня есть проблема, когда я регистрирую ответ, мой класс данных является нулевым.Я не знаю, где ошибка.
Мой клиент Rerofit
object RetrofitClient {
var retrofit: Retrofit? = null
fun getClient(baseUrl: String): Retrofit? {
if (retrofit == null) {
//TODO While release in Google Play Change the Level to NONE
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
val client = OkHttpClient.Builder()
.addInterceptor(interceptor)
.connectTimeout(100, TimeUnit.SECONDS)
.readTimeout(100, TimeUnit.SECONDS)
.build()
retrofit = Retrofit.Builder()
.client(client)
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
return retrofit
}
}
Мой интерфейс
public interface ApiLoginService {
@POST("UserManagementCoreAPI/api/v1/users")
fun loginService(@Body request: RequestBody): Call<DataLogin>
}
object ApiUtils {
val BASE_URL = "------"
val apiLoginService: ApiLoginService
get() = RetrofitClient.getClient(BASE_URL)!!.create(ApiLoginService::class.java)
}
Данные моего класса
data class DataLogin (
@SerializedName("employeeId") val employeeId : String,
@SerializedName("fullName") val fullName : String,
@SerializedName("loginConfins") val loginConfins : String,
@SerializedName("branchId") val branchId : String,
@SerializedName("isActive") val isActive : String
)
Основная активность
mApiLoginService!!.loginService(requestBody).enqueue(object : Callback<DataLogin>{
override fun onResponse(call: Call<DataLogin>, response: Response<DataLogin>) {
if(response.isSuccessful()){
if(response.body().toString() == null){
Log.d(tag,"Null")
}else{
Log.d(tag,"Logging In " + response.body()!!)
progressBar.visibility = View.GONE
btn_submit.visibility = View.VISIBLE
startActivity(Intent(this@MainActivity, HomeActivity::class.java))
}
}else{
Toast.makeText(applicationContext, "Invalid username or password", Toast.LENGTH_LONG).show()
Log.d(tag,"Error " + response.errorBody().toString())
progressBar.visibility = View.GONE
btn_submit.visibility = View.VISIBLE
}
}
override fun onFailure(call: Call<DataLogin>, t: Throwable) {
progressBar.visibility = View.GONE
btn_submit.visibility = View.VISIBLE
}
})
Мой журнал ответов
message: Logging In DataLogin(employeeId=null, fullName=null, loginConfins=null, branchId=null, isActive=null)
Я не знаю, где ошибка и почему мои данные равны нулю.Если ответ успешен, он все равно дает мне ноль.
Это пример почтальона