Я делаю приложение для Android, в котором мне нужно получать данные из онлайн-базы данных. В онлайн-базе данных есть 3 столбца: Дата, время и Varchar(255).
Вот мой PHP-код:
<?php
require "connection.php";
if($result = mysqli_query($conn, "select * from `xuberance_updates`")) {
while($row = mysqli_fetch_assoc($result)) {
echo $row["date"].",".$row["time"].",".$row["updates"].";";
}
}
?>
А вот мой код котлина в андроиде:
class RefreshTask(private val alertDialog: AlertDialog) :
AsyncTask<String, Void, String>() {
override fun onPreExecute() {
...
alertDialog.show()
...
}
override fun doInBackground(vararg params: String?): String? {
val url = URL("https://.../show_update.php")
val httpURLConnection = url.openConnection() as HttpURLConnection
httpURLConnection.doInput = true
httpURLConnection.doOutput = true
httpURLConnection.requestMethod = "POST"
httpURLConnection.connect()
val reader = BufferedReader(InputStreamReader(httpURLConnection.inputStream, "UTF-8"))
var line = reader.readLine()
val result = StringBuilder()
while (line != null) {
result.append(line)
line = reader.readLine()
}
reader.close()
httpURLConnection.disconnect()
return result.toString()
}
override fun onPostExecute(result: String?) {
alertDialog.dismiss()
...
}
...
}
Когда я запускаю AsyncTask, появляется диалоговое окно. Но от этого никогда не отказываются. Метод onPostExecute(result: String?) никогда не достигается. Как это исправить?
Изменить: иногда он успешно достигает метода onPostExecute(result: String?). Но в большинстве случаев мне нужно ждать 2 или более минут, чтобы добраться до этого метода.