我无法请求多个连续的url http请求。我的应用程序没有崩溃。在此代码中使用loadUrls()函数后,它会连续执行6个url请求并将它们存储在数组中,但我只能看到请求的第一个字符串响应。Asynctask Android中的多个连续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]
编辑:上面的代码行不打印出的文字查看来自的JSONObject到UI [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:
9月8日至18日: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
9月8日至18日:52:00.433 3297-3320/com.companyname.emitless2 d/EGL_emulation:eglMakeCurrent:0x7ebacc5cc6e0:版本2 0 (TINFO 0x7ebadbdb9d00)
08-18 09:52:00.441 3297-3320/com.companyname.emitless2 d/EGL_emulation:eglMakeCurrent:0x7ebacc5cc6e0:第二版0(TINFO 0x7ebadbdb9d00)
08-18 9点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 /测试:{“destination_addresses”:[“香港赤腊角长荣路”] ,“origin_addresses”:[“香港东涌宜东道”],“行”:[{“elements”:[{“distance”:{“text”:“5.9 km”,“value”:5948 },“duration”:{“text”:“9分钟”,“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 &目的地=亚洲国际博览馆&模式=行走&键= “已删除”
08-18 09:52:01.287 3297-3297/com.companyname.emitless2 D/Testing:{“destination_addresses”:[“香港赤腊角长荣路”],“origin_addresses”:[ “行”:[{“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 &目的地=亚洲国际博览馆&模式=骑车&键= “已删除”
08-18 09:52:01.865 3297-3297/com.companyname.emitless2 D/Testing:{“destination_addresses”:[“香港赤Kok角长荣路”],“origin_addresses”:[“Yi香港东涌东路“],”行“:[{”elements“:[{”distance“:{”text“:”5。9公里“,”值“:5948},”持续时间“:{”文本“:”9分钟“,”值“:541},”状态“:”确定“}]}],”状态“:” “}
9月8日至18日:52:02.409 1672年至1672年/ system_process W /窗口管理:试图除去不存在的令牌:[email protected]
9月8日至18日:52:02.495 3297-3320/com.companyname.emitless2 d/EGL_emulation:eglMakeCurrent:0x7ebacc5cc6e0:第二版0(TINFO 0x7ebadbdb9d00)
9月8日至18日: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
我已经从您的代码中删除了API密钥。无论如何都要考虑它的泄漏,所以我建议禁用它并获得一个新的。您几乎不应该在StackOverflow或其他公共平台上发布API密钥。 –
非常感谢,粗心 –
可以请您提供** LogCat **吗? –