我正在处理Volley POST请求,我在另一个帖子中运行帖子。我看到的问题是,即使设置了超时值,RequestFuture也会立即超时(在不到一秒的时间内)。有人可以帮忙吗?服务器URL是可访问的,它返回200 OK,但RequestFuture get不等待服务器响应。 错误:java.util.concurrent.ExecutionException:com.android.volley.TimeoutError
Thread t = new Thread(new Runnable() {
@Override
public void run() {
RequestFuture<JSONObject> future = RequestFuture.newFuture();
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonBody, future, future);
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);
try {
JSONObject response = future.get(50, TimeUnit.SECONDS);
if(response != null) {
DialogUtility.alert(context, response.toString());
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
});
t.start();
答案 0 :(得分:0)
在您的代码中尝试此操作。
request.setRetryPolicy(new DefaultRetryPolicy( 100000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
DefaultRetryPolicy
在RetryPolicy
中实施,RetryPolicy
是一个界面; DefaultRetryPolicy
构造函数中的参数1是设置超时,默认值是2500.您可以将其设置得更长一些; DefaultRetryPolicy
构造函数中的参数2是设置重复请求的最大数量,默认为1,可以设置为0; DefaultRetryPolicy
构造函数中的参数3设置为允许您指定可用于实现&lt;索引返回
避免&#34;&gt;从RESTful服务器请求数据,默认值为1,当为1时,可以简单地理解为&#34;每次请求在超时请求之前很长时间&#34; long * 2&gt;&#34;等等。