【发布时间】:2016-02-07 04:23:05
【问题描述】:
在我的一个应用程序中,我使用 Google 提供的 volley 向服务器发送请求。
问题:onErrorResponse(VolleyError error) 上的超时和错误对象为空
到目前为止我所尝试的:
1) 首先我得到了空错误对象,所以使用下面的代码解决了它:
@Override
protected void deliverResponse(String response) {
super.deliverResponse(response);
}
@Override
public void deliverError(VolleyError error) {
super.deliverError(error);
DebugLog.e("deliverResponse", "getNetworkTimeMs : " + error.getNetworkTimeMs());
}
到目前为止,当我得到错误对象 null 时,我已经知道发生了 timeout。
2) 现在申请适用于Android 和iOS 和web 但timeout 仅适用于Android。
请求的排球日志:
BasicNetwork.logSlowRequests: HTTP response for request
编辑说明:
在服务器端开发的 Web 服务对于所有三个实例(Android、Web 和 iOS)都是相同的。
Timeout发生在过多用户向服务器发出请求时。我已将超时设置为 2 分钟,尽管有时凌空会在 30 秒内引发超时。
我有很多关于更改服务器的答案,但因为不可能,所以请提供任何其他解决方案。
我还想补充一点,如果我能获得更多关于凌空何时可以超时的信息?
我看过的参考资料:
httpclient-often-times-out-using-wifi-is-going-fine-with-3g
long_xmlhttprequest_ajax_requests_timeout_on_android
已编辑:
我还设置了如下重试策略:
request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48,
0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
如果连接超时,我也不想重试。
我怎样才能进行有效的服务调用来解决timeout的问题。
如有任何帮助,将不胜感激。
谢谢。
【问题讨论】:
-
您在 volley 中使用的 api 是什么?我正在使用 OKHttpStack,它通过 volley 扩展了 HurlStack。
-
@Madhukar Hebbar:我使用了
volley.. 提供的简单'StringRequest'类!! -
我遇到了类似的问题,我所做的是我为 DefaultRetryPolicy 的超时值添加了 0,这似乎表现为无/无限超时。
-
您是因为太多用户同时请求而遇到这个问题吗?从 UX/UI 的角度来看,这似乎也是一个问题。也许增加超时将解决功能问题,那么用户等待响应时间过长的问题呢?用户的注意力很短,不想长时间盯着微调器。也许通过负载均衡来提高服务器的性能,或者硬件升级会是更好的解决方案?
标签: android http web timeout android-volley