【发布时间】:2021-03-28 11:21:32
【问题描述】:
我目前正在尝试在 Kotlin 的 android studio 中开发一个 android 应用程序。我使用 RESTful API 在我的应用中获取/发布数据到 MSSQL 数据库。
在 android studio 中,我制作了一个函数,它使用 Volley 向 API 发送 GET 请求,并以 JsonArray 格式返回来自 API 的响应。
我遇到的问题是响应是空的(/跳过),这导致返回一个空的 JsonArray。
函数如下:
1 fun apiGetRequest(context: Context, token: String?, id: String?): JsonArray {
2 val queue = Volley.newRequestQueue(context)
3 val url = "http://**.**.*.**:**/****/****?token=$token&id=$id"
4
5 var jsonArray = JSONArray()
6
7 val jsonArrayRequest = JsonArrayRequest(url, { response ->
8 jsonArray = response
9 }, {
10 //Error listener
11 })
12 queue.add(jsonArrayRequest)
13 return jsonArray
14}
此 GET 请求中使用的 URL 有效并在 Postman 中返回所需的 JsonArray。但是在这个函数中,响应要么是空的,要么是被跳过的。在调试模式下,它会完全跳过第 8 行到第 11 行,这会导致返回一个空的 JsonArray。
我还尝试首先分解单个 JsonObjects 中的响应并将其添加到 JsonArray 中,如下所示:
7 val jsonArrayRequest = JsonArrayRequest(url, { response ->
8 for(i in 0 until response.length()) {
9 val jsonObject = response.getJSONObject(i)
10 jsonArray.put(jsonObject)
11 }
但没有结果。
我感觉 android studio 中的内置多线程可能是我的问题的原因。但我不确定。
如果有人知道我的问题的修复或解决方案,我很乐意听到。或者即使是朝着正确的方向推动也是值得赞赏的。
提前致谢。
【问题讨论】:
标签: android android-studio kotlin get android-volley