Search code examples
javaandroidandroid-volleyhttp-status-code-413

BasicNetwork.performRequest: Unexpected response code 413?


i want to submit an array to my server through the following method. my array also contain images in string format(encoded in string format). without images string it work for me. but when i add string encoded images it give the following error:

  • E/Volley: [4084] BasicNetwork.performRequest: Unexpected response code 413 for http://www.......com/TrueCaller/submit_contacts.php 05-21 14:37:38.643 18773-18773/satsuma.callerid_realcaller W/System.err: com.android.volley.ClientError 05-21 14:37:38.644 18773-18773/satsuma.callerid_realcaller W/System.err: at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:190) 05-21 14:37:38.644 18773-18773/satsuma.callerid_realcaller W/System.err: at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120) 05-21 14:37:38.644 18773-18773/satsuma.callerid_realcaller W/System.err: at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)*
        private void submitContacts(){

        // now here we convert this list array into json string

        Gson gson=new Gson();

        final String newDataArray=gson.toJson(dataArray); // dataarray is list aaray

        final String server_url="http://www.........com/TrueCaller/submit_contacts.php"; // url of server check this 100 times it must be working



        // volley

        StringRequest stringRequest=new StringRequest(Request.Method.POST, server_url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response)
                    {

                        final String result=response.toString();
                        Log.d("response", "result : "+result); //when response come i will log it
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error)
                    {
                        error.printStackTrace();
                        error.getMessage(); // when error come i will log it
                    }
                }
        )
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> param=new HashMap<String, String>();
                param.put("array",newDataArray); // array is key which we will use on server side

                return param;
            }
        };
        Vconnection.getnInstance(this).addRequestQue(stringRequest); // vConnection i claas which used to connect volley

    }

array initialisation:

 if (phoneC != "") {
                Bitmap bitmap = retrieveContactPhoto(MainActivity.this, phoneC);
                String image = "";
                if (bitmap != null) {
                    image = getStringImage(bitmap);
                }

                Contact_Details dt = new Contact_Details(name, phoneC, UIDD, country_code, image, emailC, adressC);
                dataArray.add(dt);
            }

Contact_Details class is below:

public class Contact_Details {
String name;
String phone_no;
String identifier;
String country_code;

public String getCountry_code() {
    return country_code;
}

public void setCountry_code(String country_code) {
    this.country_code = country_code;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

String image;

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

String email;

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

String address;

public Contact_Details(String name, String phone_no, String identifier, String country_code, String image, String email, String address) {
    this.name = name;
    this.phone_no = phone_no;
    this.identifier = identifier;
    this.country_code = country_code;
    this.image = image;
    this.email = email;
    this.address = address;
}


public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPhone_no() {
    return phone_no;
}

public void setPhone_no(String phone_no) {
    this.phone_no = phone_no;
}

public String getIdentifier() {
    return identifier;
}

public void setIdentifier(String identifier) {
    this.identifier = identifier;
}
}

Solution

  • below code is for array uploading to server:

    private void submitContacts() {
    
    
        // now here we convert this list array into json string
    
        Gson gson = new Gson();
    
        final String newDataArray = gson.toJson(dataArray); // dataarray is list aaray
    
        final String server_url = "http://www.vvvv.com/Caller/submit_contacts.php"; // url of server check this 100 times it must be working
    
    
        // volley
    
        StringRequest stringRequest = new StringRequest(Request.Method.POST, server_url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
    
                        final String result = response.toString();
                        Log.d("response", "result : " + result); //when response come i will log it
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        error.getMessage(); // when error come i will log it
                    }
                }
        ) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> param = new HashMap<String, String>();
                param.put("array", newDataArray); // array is key which we will use on server side
    
                return param;
            }
        };
        Vconnection.getnInstance(this).addRequestQue(stringRequest); // vConnection i claas which used to connect volley
    
    
    }
    

    code of Vconnection class is below:

    public class Vconnection {
    
    private static Vconnection nInstance;
    private RequestQueue RQ;
    private Context CTX;
    
    private Vconnection(Context context)
    {
        CTX=context;
        RQ=getRequestQue();
    
    }
    
    public RequestQueue getRequestQue()
    {
        if(RQ==null)
        {
            RQ= Volley.newRequestQueue(CTX.getApplicationContext());
        }
        return RQ;
    }
    public static synchronized Vconnection getnInstance(Context context)
    {
        if(nInstance==null)
        {
            nInstance=new Vconnection(context);
        }
        return nInstance;
    }
    public <T> void addRequestQue(Request<T> request)
    {
        int socketTimeout = 30000;
        RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        request.setRetryPolicy(policy);
        RQ.add(request);
    }
    

    }