Android Volley请求无法正常工作,是否是目标API存在问题?
问题原因及解决方案
核心问题不是目标API存在问题,而是你使用的Volley请求类型与API返回的JSON结构不匹配:
- 你调用的
https://krokapp.by/api/rest/tags/?format=json返回的是JSON数组(格式为[{}, {}, ...]) - 当前代码中使用的
JsonObjectRequest仅能处理JSON对象(格式为{key: value, ...}),因此Volley在解析响应时会失败,触发错误回调
而你测试的天气API返回的是标准JSON对象,所以JsonObjectRequest可以正常工作。
修复代码
将JsonObjectRequest替换为JsonArrayRequest,适配JSON数组类型的响应:
RequestQueue mRequestQueue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRequestQueue = Volley.newRequestQueue(this); String url = "https://krokapp.by/api/rest/tags/?format=json"; final JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null, response -> { Log.d("krok_data", response.toString()); }, error -> { Log.d("krok_data", "Error"); error.printStackTrace(); }); mRequestQueue.add(request); }
额外提示
调试此类问题时,可先手动访问API地址查看返回的JSON格式,确认是数组还是对象,再选择对应的Volley请求类型:
JsonArrayRequest:处理JSON数组响应JsonObjectRequest:处理JSON对象响应
内容的提问来源于stack exchange,提问作者kirvel
相关产品推荐
相关产品推荐

