Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

random com.android.volley.NoConnection error, java.io.InterruptedIOException, statuscode=0

I have a native android app using volley framework to fetch data from a PHP server end script.

It worked well on most time, but I have 20% percentage failure.

The error says:

com.android.volley.NoConnection, java.io.InterruptedIOException.

I debugged that I found the statuscode = 0, which obviously was wrong.

I have no idea what can be the reason? Since it is working most time so there should be no obvious error code.

FYI, those PHP script on the server end works very well for my IOS app.

Please allow me post my code here:

retryConnBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            txtOut.append("\n");
            txtOut.append("Button with Retry Click");
            Log.d("Click", "Button Click");
            final String url = "https://www.myserver.com/api/getBalanceInfoTest?token=7ff3317a4f3dc07d0c297a7d16d2049c&t=" + System.currentTimeMillis();
            //final String url = "http://192.168.1.23/base/test/";
            JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            txtOut.append("\n");
                            txtOut.append("Result with Retry:");
                            txtOut.append(response.toString());
                            Log.d("Response", response.toString());
                            VolleyLog.e("Response:", response.toString());
                        }
                    },
                    new Response.ErrorListener(){
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            txtOut.append("\n");
                            txtOut.append("Error with Retry:");
                            txtOut.append(error.toString());
                            Log.d("Error.Response", error.toString());
                            VolleyLog.e("Error:", error.getMessage());
                        }
                    });

            getRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            queue.add(getRequest);
            queue.start();
        }
    });


}

And for more information, the output of my PHP script is: {"hsaBalance":"1000.00"}, created by Json_encode() function of PHP.

like image 682
Michael Cheng Avatar asked Jul 01 '15 10:07

Michael Cheng


1 Answers

I have fixed this bug. It is not a network issue.

queue.add(getRequest);
queue.start();

should be

queue.add(getRequest);

So the key is we should remove queue.start().

like image 170
Michael Cheng Avatar answered Nov 07 '22 09:11

Michael Cheng