我正在打电话给服务器,将数据作为对象发送到服务器。以下是对服务器的调用。我在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}
。