Я звоню на сервер, отправляя данные как объект на сервер.Ниже приведен звонок на сервер.Я проверил объект запроса на 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}
.