排球网络总是超时

时间:2017-09-16 22:19:26

标签: android http-post android-volley

我正在处理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();

1 个答案:

答案 0 :(得分:0)

在您的代码中尝试此操作。

request.setRetryPolicy(new DefaultRetryPolicy( 100000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
  1. DefaultRetryPolicyRetryPolicy中实施,RetryPolicy是一个界面;
  2. DefaultRetryPolicy构造函数中的参数1是设置超时,默认值是2500.您可以将其设置得更长一些;
  3. DefaultRetryPolicy构造函数中的参数2是设置重复请求的最大数量,默认为1,可以设置为0;
  4. DefaultRetryPolicy构造函数中的参数3设置为允许您指定可用于实现&lt;索引返回 避免&#34;&gt;从RESTful服务器请求数据,默认值为1,当为1时,可以简单地理解为&#34;每次请求在超时请求之前很长时间&#34; long * 2&gt;&#34;等等。