Asynctask несколько последовательных запросов URL в Android

У меня возникли проблемы с запросом нескольких последовательных URL-адресов URL-адресов. Мое приложение не сбой. После использования функции loadUrls () в этом коде он последовательно выполняет 6 запросов url и сохраняет их в массиве, однако я могу видеть только первый ответ строки запросов.

fun loadUrls(){ val locationInput = “AsiaWorldExpo” val locationCoordinatesLong = 113.947 val locationCoordinatesLat = 22.2913 val myAPIKey = "REMOVED" val transportMode = arrayListOf("&mode=driving" ,"&mode=walking", "&mode=bicycling", "&mode=transit&transit_mode=bus", "mode=transit&transit_mode=subway", "mode=transit&transit_mode=train") var requestURLArray = ArrayList<String>() for (i in 0 until transportMode.size) { requestURLArray.add("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins= " + "$locationCoordinatesLat,$locationCoordinatesLong &destinations=$locationInput ${transportMode[i]} &key= $myAPIKey") } MyAsyncTask().execute(requestURLArray[0],requestURLArray[1],requestURLArray[2] ,requestURLArray[3], requestURLArray[4], requestURLArray[5]) } override fun doInBackground(vararg p0: String?): String { try { val inString = ArrayList<String>() for (i in 0 until p0.size) { val url = URL(p0[i]) val urlConnect = url.openConnection() as HttpURLConnection urlConnect.connectTimeout = 7000 inString.add(ConvertStreamToString(urlConnect.inputStream)) publishProgress(inString[i]) Log.d("APP_TEST", "" + p0[i]) //Added for debugging try { Thread.sleep(500) } catch (e: InterruptedException) {} } }catch (r:Exception){} return " " } override fun onProgressUpdate(vararg values: String?) { try{ val jsonObject = ArrayList<String>() for (i in 0 until values.size){ jsonObject.add(values[i]!!) Log.d("Testing", "" + values[i]) //Added for debugging } idTextView2.text = jsonObject[1] 

EDIT: указанная выше строка кода не выводит текстовый вид в пользовательский интерфейс от jsonObject [1] до jsonObject [5]. Работает только jsonObject [0].

  }catch (e:Exception){} } override fun onPostExecute(result: String?) { } } fun ConvertStreamToString(inputStream: InputStream): String{ val bufferReader = BufferedReader(InputStreamReader(inputStream)) var line ="" var allString="" try{ do{ line=bufferReader.readLine() if (line!=null){ allString+=line } } while (line!=null) inputStream.close() } catch (e:Exception){} return allString } 

Вот обновленный Logcat:

08-18 09: 51: 21.697 2660-3883 / com.google.android.gms W / DriveInitializer: поток инициализации фона завершен

08-18 09: 52: 00.405 1369-1409 /? W / audio_hw_generic: Не поставляя достаточное количество данных для HAL, ожидаемое положение 772788, только написал 772560

08-18 09: 52: 00.433 3297-3320 / com.companyname.emitless2 D / EGL_emulation: eglMakeCurrent: 0x7ebacc5cc6e0: ver 2 0 (tinfo 0x7ebadbdb9d00)

08-18 09: 52: 00.441 3297-3320 / com.companyname.emitless2 D / EGL_emulation: eglMakeCurrent: 0x7ebacc5cc6e0: ver 2 0 (tinfo 0x7ebadbdb9d00)

08-18 09: 52: 00.590 3297-3894 / com.companyname.emitless2 D / APP_TEST: https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins= 22.29129833333333,113.94699999999999 & destination = AsiaWorldExpo & mode = вождение и ключ = "УДАЛЕННЫЙ"

08-18 09: 52: 00.590 3297-3297 / com.companyname.emitless2 D / Тестирование: {"destination_addresses": ["Cheong Wing Rd, Chek Lap Kok, Hong Kong"], "origin_addresses": ["Yi Tung Rd , «Tung Chung, Hong Kong»], «rows»: [{"elements": [{"distance": {"text": "5.9 km", "value": 5948}, "duration": {"text" : «9 минут», «значение»: 541}, «статус»: «ОК»}]}], «статус»: «ОК»}

08-18 09: 52: 01.286 3297-3894 / com.companyname.emitless2 D / APP_TEST: https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins= 22.29129833333333,113.94699999999999 & destination = AsiaWorldExpo & mode = walk & key = "REMOVED"

08-18 09: 52: 01.287 3297-3297 / com.companyname.emitless2 D / Тестирование: {"destination_addresses": ["Cheong Wing Rd, Chek Lap Kok, Hong Kong"], "origin_addresses": ["Yi Tung Rd , «Tung Chung, Hong Kong»], «rows»: [{"elements": [{"distance": {"text": "5.9 km", "value": 5948}, "duration": {"text" : «9 минут», «значение»: 541}, «статус»: «ОК»}]}], «статус»: «ОК»}

08-18 09: 52: 01.865 3297-3894 / com.companyname.emitless2 D / APP_TEST: https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins= 22.29129833333333,113.94699999999999 & destination = AsiaWorldExpo & mode = bicycling & key = "REMOVED"

08-18 09: 52: 01.865 3297-3297 / com.companyname.emitless2 D / Тестирование: {"destination_addresses": ["Cheong Wing Rd, Chek Lap Kok, Hong Kong"], "origin_addresses": ["Yi Tung Rd , «Tung Chung, Hong Kong»], «rows»: [{"elements": [{"distance": {"text": "5.9 km", "value": 5948}, "duration": {"text" : «9 минут», «значение»: 541}, «статус»: «ОК»}]}], «статус»: «ОК»}

08-18 09: 52: 02.409 1672-1672 / system_process W / WindowManager: Попытка удалить несуществующий токен: android.os.Binder@7d40824

08-18 09: 52: 02.495 3297-3320 / com.companyname.emitless2 D / EGL_emulation: eglMakeCurrent: 0x7ebacc5cc6e0: ver 2 0 (tinfo 0x7ebadbdb9d00)

08-18 09: 52: 02.540 3297-3320 / com.companyname.emitless2 D / EGL_emulation: eglMakeCurrent: 0x7ebacc5cc6e0: ver 2 0 (tinfo 0x7ebadbdb9d00)

08-18 09: 52: 03,632 1369-1410 /? W / audio_hw_generic: Не поставляя достаточное количество данных для HAL, ожидаемое положение 1080247, только написал 927360

08-18 09: 52: 04.458 1672-1672 / system_process W / WindowManager: Попытка удалить несуществующий токен: android.os.Binder@f7c5953

    Вы создаете новый экземпляр с именем inString типа ArrayList на каждой итерации. Поэтому, когда вы создаете новый экземпляр и добавляете к нему элемент, этот элемент всегда равен 0. Исправьте его, перемещая создание экземпляра arrayList вне цикла.

     override fun doInBackground(vararg p0: String?): String { try { val inString = ArrayList<String>() for (i in 0 until p0.size) { val url = URL(p0[i]) val urlConnect = url.openConnection() as HttpURLConnection urlConnect.connectTimeout = 7000 inString.add(ConvertStreamToString(urlConnect.inputStream)) publishProgress(inString[i]) try { Thread.sleep(500) } catch (e: InterruptedException) {} } }catch (e:Exception){} return " " } 
    Intereting Posts
    Импортировать библиотеки зависимостей в терминале kotlinc Out-projected type «ArrayList <*>» запрещает использование «public open fun add (index: Int, element: E): Unit, определенный в java.util.ArrayList ' Назначение отдельного элемента атрибуту значения IntArray в аннотациях Kotlin RuntimeException: не удалось создать экземпляр активности ComponentInfo … ClassNotFoundException Формат в шаблонах строк kotlin Android WebView прыгает вверху каждого обновления страницы (?) Множественные значения не допускаются для опции плагина. Org.jetbrains.kotlin.android:package Проблема с Kotlin после Android Studio была обновлена ​​до 0,6 Kotlin: цикл через отфильтрованный (возможно, пустой и не более одного элемента) список Перегруженные методы, получающие функции более высокого порядка в Котлине Kotlin .let {} null безопасность предположительно ложная ошибка Объяснение относительно того, почему это сравнение строк приводит к ошибке? Котлинский эквивалент «экспортного дефолта» в JavaScript Kotlin boxed Int – это не то же самое Какой из них лучший объект или верхняя функция в Котлине?