В этом методе я использую топливный каркас для манипулирования HTTP-запросами. Проблема в том, что я не могу изменить локальную переменную успеха. Может кто-нибудь мне помочь? Я попытался определить поле и статическое поле, но безуспешно. (Метод работает правильно, однако логическое значение не возвращается правильно ..)
fun getToken(email: String, password: String): Boolean {
//TODO("Fix Success Boolean! --> alawys false")
var success = false
var auth ="/auth/token.json".httpPost()
.body("""{"username":"$email", "password":"$password"}""", Charsets.UTF_8)
.header(mapOf("Content-Type" to "application/json"))
.response { request, response, result ->
when (result) {
is Result.Failure -> {
// val data = result.get()
val ex = result.getException()
Log.println(Log.ASSERT, "RESULT", response.data.toString(Charsets.UTF_8))
Log.println(Log.ASSERT, "Request", request.cUrlString())
Log.println(Log.ASSERT, "Exception_Message", ex.message)
Log.println(Log.ASSERT, "Response_Message", ex.response.responseMessage)
success = false
}
is Result.Success -> {
val data = result.get()
val returnJson = data.toString(Charsets.UTF_8)
Log.println(Log.ASSERT, "RESULT_LOGIN", returnJson)
success = true
// Parse return Json
// e.g. {"id":"36e8fac0-487a-11e8-ad4e-c471feb11e42","token":"d6897a230fd7739e601649bf5fd89ea4b93317f6","expiry":"2018-04-27T17:49:48.721278Z"}
val jelement = JsonParser().parse(returnJson)
val jobject = jelement.getAsJsonObject()
// save field for class-scope access
token = jobject.get("token").asString
id = jobject.get("id").asString
}
}
}
return success
}