【问题标题】:Volley REST API get request error when response has more than 100 JSON objects当响应包含超过 100 个 JSON 对象时,Volley REST API 获取请求错误
【发布时间】:2018-05-16 05:44:55
【问题描述】:

我正在编写一个应用程序,它显示来自 Visual Studio 中用 C# 编写的 REST 服务的一些数据。 REST API 由我的团队编写。响应通常是一个 JSON 数组,其中 JSON 对象作为其子级,这些子级本质上表示要返回的数据。我正在使用 Volley 库来处理请求,解析响应并将其放入 Recycler View 列表中。当 JSON 对象的数量,或者假设返回的 JSON 数组的长度小于 100 时,响应就会出现。只要超过 100,响应就不会到达应用程序。即使是 JSONException 堆栈跟踪也没有任何帮助。我尝试在 Postman 中测试 API,无论返回多少 JSON 对象,它都能正常工作。 你能帮我弄清楚是否有任何我们可以覆盖的例程来解决这个问题吗?如果您想查看代码本身,请告诉我。

谢谢, 阿图尔

【问题讨论】:

  • 可能您的 100 个 JSON 对象对于移动设备来说太多了。可能你应该给它分页。
  • @VladyslavMatviienko:我只在移动设备上显示 10 个结果,并将其余结果通过电子邮件发送给用户,因此分页实际上不在我们的设计中。不管怎样,谢谢你的回复:)

标签: android


【解决方案1】:

我认为它崩溃是因为 timeOutError。当 volley 需要解析大量数据时,你应该为你的 volley 请求设置超时时间。默认超时时间为 2500 毫秒,将其设置为 10000 毫秒或更高即可。

strReq.setRetryPolicy(new DefaultRetryPolicy(10000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

它不会消耗你分配的所有时间,但是一旦获取所有数据就会断开连接

timeoutError 不会让你崩溃,但会调用 onErrorResponse,请确保在进行插入操作之前已创建要插入的表。

更多信息请访问here、here 和largeHeap

【讨论】:

  • 谢谢萨杰杜尔。有效。感谢您及时的回复。干杯。
【解决方案2】:

你可以设置截击的超时时间 检查这个 https://stackoverflow.com/a/17179436/1213735

最好使用改装,这比凌空要好得多。

【讨论】:

  • 感谢您的回复。超时是要走的路。
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2014-09-01
  • 2014-03-24
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
相关资源
最近更新 更多