无法在 Android 中获取 JSON 数据 [using volley Library]
Not able to fetch JSON data [using volley Library] in Android
jason数组请求代码如下:
JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET,url, (JSONArray) null , new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
Log.d("Response:", String.valueOf(response.getJSONObject(0)));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "Response not recieved", Toast.LENGTH_SHORT).show();
}
});
我使用请求队列的单例实例来获取数据,
AppController.getInstance(context.getApplicationContext()).addToRequestQueue(arrayRequest);
我正在使用 api 服务,它提供了一堆问题(api 生成了一个 url,returns 是 JSON 对象,数组(只需尝试打开 url link,就会看到 json 数组)
但是当我 运行 应用程序时,请求甚至没有得到响应,程序流进入错误侦听器块。
有人可以解释这种行为吗?是不是因为 url 提供的 JSON 数组有嵌套数组?为什么?
我尝试在这里阅读和分析其他问题,可能有同样的问题,但我一无所获。
您只想将 JsonArrayRequest
更改为 JsonObjectRequest
:
请复制并粘贴以下代码:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
try {
JSONArray jsonArray = response.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String category = jsonObject.getString("category");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG", "Error: " + error.getMessage());
// hide the progress dialog
}
});
AppController.getInstance().addToRequestQueue(jsonObjReq, "TAG");
按照此 link 了解其他请求:Androidhive
jason数组请求代码如下:
JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET,url, (JSONArray) null , new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
Log.d("Response:", String.valueOf(response.getJSONObject(0)));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "Response not recieved", Toast.LENGTH_SHORT).show();
}
});
我使用请求队列的单例实例来获取数据,
AppController.getInstance(context.getApplicationContext()).addToRequestQueue(arrayRequest);
我正在使用 api 服务,它提供了一堆问题(api 生成了一个 url,returns 是 JSON 对象,数组(只需尝试打开 url link,就会看到 json 数组)
但是当我 运行 应用程序时,请求甚至没有得到响应,程序流进入错误侦听器块。
有人可以解释这种行为吗?是不是因为 url 提供的 JSON 数组有嵌套数组?为什么?
我尝试在这里阅读和分析其他问题,可能有同样的问题,但我一无所获。
您只想将 JsonArrayRequest
更改为 JsonObjectRequest
:
请复制并粘贴以下代码:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
try {
JSONArray jsonArray = response.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String category = jsonObject.getString("category");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG", "Error: " + error.getMessage());
// hide the progress dialog
}
});
AppController.getInstance().addToRequestQueue(jsonObjReq, "TAG");
按照此 link 了解其他请求:Androidhive