Java 获取com.android.volley.ServerError

Java 获取com.android.volley.ServerError,java,android,sqlite,android-volley,Java,Android,Sqlite,Android 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":[]}}]} JsonObjectHeader类是:- public

凌空抽射发出请求

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":[]}}]} JsonObjectHeader类是:-

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;

    }

}

我试过用邮递员。所以它工作得很好:所以我认为没有服务器错误

您作为字符串发送的json正文,尝试将其作为json对象发送。服务器可能需要一个json对象。否则,标题值可能会出现问题。在“邮递员”中检查您从那里发送的邮件头是否与从应用程序发送的邮件头相同。

您有一个服务器错误(即在应用程序之外)。您需要检查服务器日志以查找错误的根本原因,然后从那里开始。如果您希望在Android上处理此错误,则需要检查服务器返回的状态。@Christillwell我已在服务器上添加了server logI Im Get empty body,因此这可能是来自appHTTP.500的错误。您的服务器提供了一个响应代码,而不是截击生成的内容。看起来您的服务器遇到了空值。您是否正在向服务器发送它所需的所有值?我还将发送jsonObject。这就是打字错误。我和邮递员商量过了,用同样的信物也行。
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;

    }

}
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)
{}
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)