更改截击超时时间

更改截击超时时间

我使用Android的新volley框架向我的服务器发出请求。但是它在得到响应之前会超时,尽管它确实会响应。

我尝试添加以下代码:

HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, timeoutMs);

在……里面HttpClientStack将volley框架转换为不同的整数(50000),但它仍然在50秒前超时。

有没有办法将超时更改为长值?


UYOU
浏览 404回答 3
3回答

三国纷争

看见Request.setRetryPolicy()的构造函数DefaultRetryPolicy,G.JsonObjectRequest&nbsp;myRequest&nbsp;=&nbsp;new&nbsp;JsonObjectRequest(Method.GET, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url,&nbsp;null, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Response.Listener<JSONObject>()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onResponse(JSONObject&nbsp;response)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d(TAG,&nbsp;response.toString()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;new&nbsp;Response.ErrorListener()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onErrorResponse(VolleyError&nbsp;error)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d(TAG,&nbsp;"Error:&nbsp;"&nbsp;+&nbsp;error.getMessage()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}});myRequest.setRetryPolicy(new&nbsp;DefaultRetryPolicy( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MY_SOCKET_TIMEOUT_MS,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultRetryPolicy.DEFAULT_MAX_RETRIES,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

梦里花落0921

要处理Androidvolleytimeout,您需要使用RetryPolicy返乡政策volley为您的请求提供了一种简单的实现Retry策略的方法。volley将所有请求的默认套接字&ConnectionTImeout设置为5秒。RetryPolicy是一个接口,在该接口中,需要实现在超时发生时如何重试特定请求的逻辑。它处理这三个参数。超时-在Millis中指定每次重试尝试中的套接字超时。重试次数-重试次数。后退乘法器-一个乘法器,用于确定每次重试的指数时间设置为套接字。前男友。如果使用以下值创建Retry策略超时-3000毫秒,数值重试尝试-2,后退乘法器-2.0重试尝试1:时间=时间+(时间*后退乘数);时间=3000+6000=9000毫秒套接字超时=时间;发出请求,套接字超时时间为9秒。重试尝试2:时间=时间+(时间*后退乘数);时间=9000+18000=27000毫秒套接字超时=时间;以27秒的套接字超时发送请求所以在最后重试尝试2如果仍然发生套接字超时,则会发出一个TimeoutError在您的UI错误响应处理程序中。//Set&nbsp;a&nbsp;retry&nbsp;policy&nbsp;in&nbsp;case&nbsp;of&nbsp;SocketTimeout&nbsp;&&nbsp;ConnectionTimeout&nbsp;Exceptions.&nbsp; //Volley&nbsp;does&nbsp;retry&nbsp;for&nbsp;you&nbsp;if&nbsp;you&nbsp;have&nbsp;specified&nbsp;the&nbsp;policy.jsonObjRequest.setRetryPolicy(new&nbsp;DefaultRetryPolicy(5000,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultRetryPolicy.DEFAULT_MAX_RETRIES,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

狐的传说

只是为了对我的方法有所贡献。如前所述,RetryPolicy是该走的路。但是,如果您需要的策略与所有请求的默认值不同,则可以在基类中设置它,因此不需要为请求的所有实例设置策略。就像这样:public&nbsp;class&nbsp;BaseRequest<T>&nbsp;extends&nbsp;Request<T>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;BaseRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Response.ErrorListener&nbsp;listener)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(method,&nbsp;url,&nbsp;listener); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRetryPolicy(getMyOwnDefaultRetryPolicy()); &nbsp;&nbsp;&nbsp;&nbsp;}}在我的例子中,我有一个从这个BaseRequest扩展而来的GsonRequest,所以我不会忘记为一个特定的请求设置策略,如果某些特定的请求需要的话,您仍然可以重写它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android