我正在开发一个Android应用程序,它的工作流程必须处理一系列对远程服务器的请求(实际上只是一个网站 - 它用HTML响应)。我正在使用Volley和OkHttp。
让我们这样说:我有这样的事情:
private void refresh() {
for (Call call : listOfCalls) {
addToQueue(call); // because of Volley mechanism, this also executes the request
}
}
@Override
public void callback() {
// I expect this method to be called listOfCalls.size() times
}
呼叫次数大约为10次,根据我的测试,它们的处理时间约为10-15毫秒。这意味着服务器必须处理来自同一客户端的每1/2毫秒1次呼叫。
当我处于调试模式时,一切都很好,我强制将呼叫单独发送,每1-2秒一次。但每当我试图同时突然发出一系列电话时,突然后端开始做,但只有一些电话,并且没有任何明显的模式,两个非常奇怪的事情:
Content-Length: 0
(我特意将内部缓存设置为null,因此它与此无关)。请注意,即使我尝试仅执行每次通话之后的,前一个已完成(因此,如果它是callback()
,则调用下一个请求队列,而refresh()
只是第一个),我仍然遇到同样的问题。唯一改变的是它停止提供空体 - 这只是超时。
所以我的问题是:这个服务器是否有可能实现某种“控制”,这样每当同一个客户端在很短的时间内开始执行太多请求时,它就会开始以不常见的方式响应方式(即超时并提供Content-Length: 0
)?
因此,唯一的解决方法实际上是在每次通话之间以任意“暂停” - “暂停”停止客户端?