我正在使用Volley来请求未启动的API,但是当我尝试以callback
的身份请求它时,它并没有给我任何错误,但是我知道这是错误的方法,因为我接收的数据是{{1} }
我的方法
event
日志 由于JSONArray太大而无法在此处发布,因此这是有道理的
JsonObjectRequest
如果您想查看JSONArray,请点击链接“ JSONArray
”
我也看过this问题,但这完全不同
您只需注册一个帐户here即可请求密钥。
答案 0 :(得分:1)
您需要首先创建jsonObject。您请求JSONArray
,但服务器响应为JSONObject
。尝试StringRequest
获取JSONObject
。
尝试一下:
StringRequest stringRequest = new StringRequest(Request.Method.GET,
URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
// Loop through the array elements
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject js = jsonArray.getJSONObject(i);
Log.d("TESTING", js.getString("id"));
}
p.dismiss();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("TESTING",error.getMessage());
}
})
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
希望这会起作用。
答案 1 :(得分:0)
您是对json对象的请求,但请求时间是您调用jsonarrayrequest,因此JsonException来了
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,url,
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject js = jsonArray.getJSONObject(i);
Log.d("TESTING",js.getString("id"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
});