25

I am trying to hit a rest service using 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;
    }
}

But it is giving me the Volley Timeout error. Below is the Logcat

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

Please let me know know if I am doing it wrong. This is my first question in stackoverflow regarding Android.

Raju
  • 1,427
  • 2
  • 18
  • 31

13 Answers13

53

This worked for me:

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

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

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

            }
        });

You can change that time.

LeoGalante
  • 747
  • 6
  • 14
18
com.android.volley.TimeoutError

In 75% cases this error is occured due to connectivity issue '

if you are testing on localhost or local server

Check firewall is off

K Guru
  • 1,292
  • 2
  • 17
  • 36
5
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);
Ahamadullah Saikat
  • 4,437
  • 42
  • 39
4
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
                6000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)
        );
Meysam Keshvari
  • 1,141
  • 12
  • 14
2

Volley throws timeouterror when it couldn't connect to the url provided in request. reasons could be:

1)connectivity. 2)Url is not valid.

Try running it on emulator.It should work on emulator as emualator runs on same machine and has same ip as your wamp running on.

To make it work on real device connect your device to same WLAN as your wampserver is running on. If not connected to same WLAN you have to host your php scripts to web. To do this there are many free web hosting sites like https://www.000webhost.com/ are available check them out.

Hope this help!

2
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();
                }
Avinash
  • 361
  • 4
  • 16
2

Add the following after your error listener

myRequest.setRetryPolicy(new DefaultRetryPolicy(
    MY_SOCKET_TIMEOUT_MS, 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Adam Kipnis
  • 10,175
  • 10
  • 35
  • 48
Vishnu Saini
  • 129
  • 5
1

Check out that your IPv4 Address in the URL is correct and has not been changed.

Red Dot
  • 59
  • 8
1

On Macbook I was running a Django application written in python3.X.
I had to do the following.

  1. Go to system settings
  2. Go to Security & Privacy
  3. Select the firewall tab and click on the firewall options
  4. Allow incoming connection for python 3.7

enter image description here

Kishor Pawar
  • 3,386
  • 3
  • 28
  • 61
0

The same occurred to me, because I did not started my Xampp. I think may be the same.

0

5 year old question is tough to deal with today's problem.

Volley will no more accept http and ip address. Will accept only https with fqdn only.

EngineSense
  • 3,266
  • 8
  • 28
  • 44
0

use retry policy like this

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

requestQueue.add(request);
David Buck
  • 3,752
  • 35
  • 31
  • 35
Amit Joshi
  • 35
  • 9
-3

This happened to me. I determined that the problem happened because I did not start Apache and MySQL in XAMPP.

Robert Columbia
  • 6,313
  • 15
  • 32
  • 40
Hani
  • 1
  • 1