Volley返回值为null且键很好的响应对象

时间:2018-12-14 10:36:32

标签: java android android-volley response

我正在打电话给服务器,将数据作为对象发送到服务器。以下是对服务器的调用。我在https://jsonlint.com上检查了请求对象,它似乎是有效的。呼叫返回代码200,一切正常。但是响应的值像{"orderid":null}一样为空。当我用邮递员点击api时,响应为{"orderid":"example123"} 调用的代码是:

public void orderfinal() {
    mRequestQueue = Volley.newRequestQueue(Cart.this);
    mStringRequest = new StringRequest(Request.Method.POST, carturl, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d("Response", "onResponse: " + response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("This is the error", "Error :" + error.toString());
        }
    }) {
        @Override
        public String getBodyContentType() {
            return "application/json";
        }

        @Override
        public Map<String,String> getHeaders() throws AuthFailureError{
            Map<String, String> params= new HashMap<String, String>();
            params.put("Content-Type","application/json");
            return params;
        }

        @Override
        public byte[] getBody() throws AuthFailureError {
            Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
            String json_string = gson.toJson(order_object);
            return json_string.getBytes();
        }
    };
    mRequestQueue.add(mStringRequest);

}

这是我的logcat打印的内容:

D/Response: onResponse: {"orderid":null}

编辑: 我只是要求对API进行更改,并且如果服务器仅返回abc之类的字符串,则日志会正确打印出来。如果将响应更改为123而不是abc,则无论响应字符串是什么,日志都会输出0。并且请注意,该对象的值为orderid作为数字。例如{"orderid":"00012"},日志显示为{"orderid":null}

0 个答案:

没有答案