【发布时间】:2019-01-25 16:09:10
【问题描述】:
我正在开发一个聊天应用程序,我在其中使用 FCM、PHP 后端和 Volley 来处理请求。
最初,当我登录到我的应用程序时,聊天工作正常且快速,但一段时间后开始出现截击超时错误,并且由于我没有使用任何重试策略,聊天消息会丢失。
如果我增加套接字超时并使用重试策略,那么应用就会挂起。
这是我调用 API 的代码 sn-p:
public void doNetworkRequest(int type, String url, final HashMap<String, String> params, Response.Listener requestListener, Response.ErrorListener errorListener) {
StringRequest mRequest = new StringRequest(type, url, requestListener, errorListener) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
return headers;
}
};
// int socketTimeout = 500000;
// RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
// mRequest.setRetryPolicy(policy);
mQueue.add(mRequest);
}
这个问题几乎每个 API 都会出现,有时像登录、注销、聊天等。
【问题讨论】:
-
您使用的是什么版本的 Volley?
-
@Andy:凌空版本:1.0.0
-
当我使用 volley 1.1.1(最新版本)时出现同样的问题
-
@Sangeeta 我认为您的服务器没有响应。所以你得到超时错误..
-
你试过用“邮递员”还是其他方式?它做得好吗?你确定它不是来自服务器端吗?