На странице входа в мое приложение у меня есть поля электронной почты и пароль и кнопка входа.
Кнопка сначала получает имя пользователя и пароль, затем создает тост, а затем вызывает отдельный файл kotlin, чтобы сделатьhttp запрос с данными для входа.
Странная вещь: если учетные данные неверны, появляется тост, но когда учетные данные верны и сервер отвечает данными, которые тост никогда не показывает.
Однако я понимаю, что порядок выполнения должен быть таким, чтобы тост отображался до вызова http.
btn_signin.setOnClickListener(){
val username = et_username.text.toString().trim()
val password = et_password.text.toString().trim()
var toast_text = "Signing you in..."
Toast.makeText(this@LoginActivity, toast_text, Toast.LENGTH_LONG).show()
val resp = Punchcard().Login(username = username, password = password)
}
Попытался изменить длину на короткую без разницы.Конечно, это должно отображаться независимо от следующего кода?
РЕДАКТИРОВАТЬ:
Это в файле LoginActivity.kt, я немного отредактировал приведенный выше код.
Другой отдельный файл(Punchcard.kt) обрабатывает вызов API на сервере, который все работает нормально и не вызывает никаких проблем.Теоретически это не должно иметь ничего общего с Toast, просто странно, что обработка в отдельном файле, похоже, отнимает у него создание.Неужели я схожу с ума от того, что они должны быть связаны между собой, а поток отображения Android должен быть построчным?
EDIT2:
Это функция входа в систему Punchcard.kt, которая выполняет вызов okhttp3 API ивозвращает ответ в виде строки.Прежде, чем это упомянуто, я знаю, что я не должен передавать строку пароля, это - недостаток в API, который я использую, но будет обновлен в будущем.Также, как упоминалось выше, это не должно иметь никакого эффекта, так как тост вызывается перед функцией входа в систему.
fun Login(username : String, password : String): String {
val url: String = "http://192.168.8.200:3001/api/auth/signin"
val json = JSONObject()
json.put("usernameOrEmail", username)
json.put("password", password)
val body: RequestBody = RequestBody.create(JSON, json.toString())
val request = Request.Builder()
.url(url)
.post(body)
.build()
val policy : StrictMode.ThreadPolicy = StrictMode.ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
try {
var response: Response = client.newCall(request).execute()
return response.body()?.string() ?: "error"
} catch (e : Exception) {
println(e)
}
return "error"
}