gpt4 book ai didi

java - 在 Android 中异步任务多个连续的 URL 请求

转载 作者:搜寻专家 更新时间:2023-11-01 09:32:46 24 4
gpt4 key购买 nike

我在请求多个连续的 url http 请求时遇到问题。我的应用程序没有崩溃。在此代码中使用 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: The above line of code does not print out the Text View to UI from jsonObject[1] up to jsonObject[5]. Only jsonObject[0] works.

    }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: Background init thread ended

08-18 09:52:00.405 1369-1409/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 772788 , only wrote 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 &destinations=AsiaWorldExpo &mode=driving &key= "REMOVED"

08-18 09:52:00.590 3297-3297/com.companyname.emitless2 D/Testing: { "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 mins", "value" : 541 }, "status" : "OK" } ] } ], "status" : "OK"}

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 &destinations=AsiaWorldExpo &mode=walking &key= "REMOVED"

08-18 09:52:01.287 3297-3297/com.companyname.emitless2 D/Testing: { "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 mins", "value" : 541 }, "status" : "OK" } ] } ], "status" : "OK"}

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 &destinations=AsiaWorldExpo &mode=bicycling &key= "REMOVED"

08-18 09:52:01.865 3297-3297/com.companyname.emitless2 D/Testing: { "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 mins", "value" : 541 }, "status" : "OK" } ] } ], "status" : "OK"}

08-18 09:52:02.409 1672-1672/system_process W/WindowManager: Attempted to remove non-existing token: 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: Not supplying enough data to HAL, expected position 1080247 , only wrote 927360

08-18 09:52:04.458 1672-1672/system_process W/WindowManager: Attempted to remove non-existing token: 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 " "
}

关于java - 在 Android 中异步任务多个连续的 URL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45730622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com