Поэтому я использую AsyncHTTPClient, чтобы позвонить и проверить, прошел ли аутентификация пользователя.У меня есть логическое «authenticated», чтобы проверить, если они есть, и я хочу изменить его значение внутри onSuccess, однако onSuccess, похоже, не влияет на значение authenticated outside, и я очень смущен, почему.
Я могу подтвердить, что это действительно входит в оператор if, поэтому ответ, который я получаю, является правильным.Я новичок в Kotlin, однако что-то подобное в Java работает так, как я сейчас перехожу.
Это мой код:
fun authenticate(username: String, password: String): Boolean? {
var params = RequestParams()
params.put("username", username)
params.put("password", password)
var authenticated: Boolean? = null
var a: Int = 1
//Encrypt password and stuff
restClient.get("/authenticate", params, object : JsonHttpResponseHandler(){
override fun onSuccess(statusCode: Int, headers: kotlin.Array<out Header>?, response: JSONObject?) {
if(response == null) {Log.d("no response", "404")}
else if (response.get("success").toString() == "true") {
authenticated = true
a = a + 1
Log.d("authenticatedInside", a.toString())
Log.d("authenticatedInside", authenticated.toString())
}
}
})
Log.d("authenticated", a.toString())
Log.d("authenticated", authenticated.toString())
return authenticated
}
AuthenticatedInside дает правильные значения.
a - это просто целое число теста, результат здесь равен 1, проверка подлинностивсе еще ноль, и это также возвращает ноль.