简体   繁体   中英

Getting com.android.volley.ServerError

PUT request using volley

Log.i("JsonObject is",finaljsonData.toString());
Output:-

{"stats":[{"med_id":1,"med_name":"Evening","start_date":1476107306168,"end_date":1476193706168,"adherence":{"taken_on":[1476107704867],"missed_on":[]}}]}

Code:

    JsonObjectHeader customRequest=new JsonObjectHeader(Request.Method.PUT,url, finaljsonData, listener, errorListener);
    RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
    requestQueue.add(customRequest);

And the JsonObjectHeader class is:-

public class JsonObjectHeader extends JsonRequest<JSONObject> {

    public JsonObjectHeader(int method, String url, String requestBody, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) {
        super(method, url, requestBody, listener, errorListener);
    }

    public JsonObjectHeader(String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener,
                            Response.ErrorListener errorListener) {
        this(jsonRequest == null ? Method.GET : Method.POST, url, jsonRequest,
                listener, errorListener);
    }

    public JsonObjectHeader(int method, String url, JSONObject jsonRequest,
                            Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) {
        super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
                errorListener);
    }

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {

        try {
            Log.i("Response parse","Yes");
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            Log.i("Json String",jsonString);
            Log.i("Response Complete",response.toString());
            Log.i("Response Data",response.data.toString());
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }

    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json; charset=utf-8");
        headers.put("x-access-token", Constants.getTokenDB());
        return headers;

    }

}

LogCat OutPut:

10-10 19:45:15.186 22355-22426/user.com.test2 E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7f5ba7cac7e0
10-10 19:45:15.797 22355-22650/user.com.test2 E/Volley: [198] BasicNetwork.performRequest: Unexpected response code 500 for url
10-10 19:45:15.798 22355-22355/user.com.test2 W/System.err: com.android.volley.ServerError
10-10 19:45:15.798 22355-22355/user.com.test2 W/System.err:     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:163)
10-10 19:45:15.798 22355-22355/user.com.test2 W/System.err:     at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)

Server LogCat:-

{}
www-user-9 PUT /medstats 500 4.579 ms - 627

 TypeError: Cannot read property 'length' of undefined
www-user-9     at /abc.js:390:12
www-user-9     at Layer.handle [as handle_request] (/xyz.js.js:95:5)
www-user-9     at next (/abc.js:131:13)
www-user-9     at /abc.js:61:5
www-user-9     at //abc.js:27:18
www-user-9     at nextTickCallbackWith0Args (node.js:420:9)
www-user-9     at process._tickDomainCallback (node.js:390:13)

I have tried using PostMan. So it is working fine: so I think no server error

The json body you are sending as string, try to send it as a json object. The server might be expecting a json object. Else there can be issue with the headers values. Check in postman whether the header that you are sending from there is same as what you are sending from the app.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM