Это очень простой c обратный вызов POST с использованием Retrofit. После вызова моего Rest API response.code равен 200, а response.body содержит нужный мне результат и не является нулевым. Журнал подтверждает это. По какой-то причине ссылка, содержащаяся в response.body , не копируется в переменную loginResult , и последний оператор if всегда истинен. Я подозреваю, что это как-то связано с тем, что обратный вызов не может получить доступ к переменной loginResult , но я не уверен.
var loginResult: AuthenticationRequestResult? = null
api.authenticateUser(AuthenticationRequestData(username, password)).enqueue(object : Callback<AuthenticationRequestResult> {
override fun onFailure(call: Call<AuthenticationRequestResult>, t: Throwable) {
Log.e(TAG,t.message,t)
}
override fun onResponse(call: Call<AuthenticationRequestResult>, response: Response<AuthenticationRequestResult>) {
loginResult = response.body() as AuthenticationRequestResult
Log.d(TAG,"response code:" + response.code())
Log.e(TAG,"Response body: " + response.body())
Log.e(TAG,"Response body error: " + response.body()?.error)
}
})
if(loginResult == null) {Log.e(TAG,"LoginResult is null")}