凌空超时错误

时间:2014-09-23 11:57:07

标签: android

我正试图用Volley打一场休息服务。

public class AuthFunctions {
    private static final String LOGIN_URL = "http://10.0.2.2:8080/stewayservices/user-management/users/10";
    boolean result;
    public boolean loginUser(String email,String password){

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,LOGIN_URL,null,new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.d("JsonObject Response",response.toString());
                try {
                    JSONObject user = response.getJSONObject("user");
                    String firstName = user.getString("firstName");
                    if (firstName.equals("Lokesh")){
                        result = true;
                    }
                    else{
                        result = false;
                    }
                } catch (JSONException e) {
                    Log.d("Web Service Error",e.getMessage());
                    e.printStackTrace();
                }
            }
        },new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.d("JsonObject Error Response",volleyError.toString());
            }
        });
        request.setRetryPolicy(new DefaultRetryPolicy(500000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        AppController.getInstance().addToRequestQueue(request);
        return result;
    }
}

但是它给了我Volley Timeout错误。下面是Logcat

 D/JsonObject Error Response﹕ com.android.volley.TimeoutError

如果我做错了,请告诉我。这是关于Android的stackoverflow中的第一个问题。

13 个答案:

答案 0 :(得分:27)

这对我有用:

request.setRetryPolicy(new RetryPolicy() {
            @Override
            public int getCurrentTimeout() {
                return 50000;
            }

            @Override
            public int getCurrentRetryCount() {
                return 50000;
            }

            @Override
            public void retry(VolleyError error) throws VolleyError {

            }
        });

你可以改变那个时间。

答案 1 :(得分:9)

com.android.volley.TimeoutError

在75%的情况下,由于连接问题而发生此错误 &#39;

如果您在localhost或本地服务器上进行测试

检查防火墙是否已关闭

答案 2 :(得分:3)

String url = "https://api.joind.in/v2.1/events?start=" + start + "&resultsperpage=20&format=json";
Log.i("DREG", "onLoadMoreItems: " + url);
final StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // Add Code Here
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (error instanceof NetworkError) {
                } else if (error instanceof ServerError) {
                } else if (error instanceof AuthFailureError) {
                } else if (error instanceof ParseError) {
                } else if (error instanceof NoConnectionError) {
                } else if (error instanceof TimeoutError) {
                    Toast.makeText(getContext(),
                            "Oops. Timeout error!",
                            Toast.LENGTH_LONG).show();
                }
            }
        }
);
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
        10000,
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(stringRequest);

答案 3 :(得分:3)

public void onErrorResponse(VolleyError error) {
                if (error instanceof NetworkError) {
                } else if (error instanceof ServerError) {
                } else if (error instanceof AuthFailureError) {
                } else if (error instanceof ParseError) {
                } else if (error instanceof NoConnectionError) {
                } else if (error instanceof TimeoutError) {
                    Toast.makeText(getContext(),
                            "Oops. Timeout error!",
                            Toast.LENGTH_LONG).show();
                }

答案 4 :(得分:2)

在错误侦听器之后添加以下内容

myRequest.setRetryPolicy(new DefaultRetryPolicy(
    MY_SOCKET_TIMEOUT_MS, 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

答案 5 :(得分:1)

当它无法连接到请求中提供的网址时,Volley会抛出时间错误。原因可能是:

1)的连通性。 2)网址无效。

尝试在模拟器上运行它。它应该在模拟器上运行,因为emualator在同一台机器上运行,并且与运行的wamp具有相同的ip。

要使其在真实设备上运行,请将设备连接到运行wampserver的同一WLAN。如果未连接到同一WLAN,则必须将php脚本托管到Web。要做到这一点,有很多免费的网站托管网站,如https://www.000webhost.com/,可以查看它们。

希望这有帮助!

答案 6 :(得分:1)

在Macbook上,我正在运行一个用python3.X编写的Django应用程序。
我必须执行以下操作。

  1. 转到系统设置
  2. 转到安全和隐私
  3. 选择防火墙选项卡,然后单击防火墙选项
  4. 允许python 3.7的传入连接

enter image description here

答案 7 :(得分:1)

stringRequest.setRetryPolicy(new DefaultRetryPolicy(
                6000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)
        );

答案 8 :(得分:0)

检查URL中的IPv4地址是否正确,并且未更改。

答案 9 :(得分:0)

我也遇到了同样的情况,因为我没有启动Xampp。我想可能是一样的。

答案 10 :(得分:0)

5岁的问题很难解决今天的问题。

Volley将不再接受http和ip地址。将仅接受带有fqdn的https。

答案 11 :(得分:0)

使用这样的重试策略

request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

requestQueue.add(request);

答案 12 :(得分:-3)

这件事发生在我身上。我确定是因为我没有在XAMPP中启动Apache和MySQL。