Я вызываю http-запрос в Android с использованием залпа, но иногда я получаю ошибку синтаксического анализа JSON при получении ответа, даже если ответ всегда одинаков.
void login() throws JSONException {
RequestQueue queue = Volley.newRequestQueue(this);
String url = String.format("%s/login", getString(R.string.url));
JSONObject data = new JSONObject();
data.put("email", etEmail.getText().toString());
data.put("password", etPassword.getText().toString());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.POST, url, data, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Helper.unblockUI(pb, getWindow());
try{
if(response.has("error")){
Toast.makeText(LoginActivity.this, response.getString("error"), Toast.LENGTH_SHORT).show();
}else if(response.has("id") && response.has("token")){
enterMainActivity();
}else{
Toast.makeText(LoginActivity.this, "Something is wrong", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e){
Helper.unblockUI(pb, getWindow());
Toast.makeText(LoginActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Helper.unblockUI(pb, getWindow());
Toast.makeText(LoginActivity.this, error.toString(), Toast.LENGTH_SHORT).show();
}
});
Helper.blockUI(pb, getWindow());
queue.add(jsonObjectRequest);
}
и ответ:
{"error":"Email doesn't exist"}
когда ответ выглядит так, что он не содержит ошибок, потому что это допустимый JSON, я не знаю почему, но иногда ответ выглядит так:
{"error":"Email doesn't exist"
это минус одна скобка в конце, поэтому залповый ответ - это ошибка, потому что это недопустимый JSON.
есть идеи, почему это происходит?потому что иногда он получает действительный json, а иногда нет, я всегда возвращаю один и тот же ответ от API, но иногда ответ равен минус одна скобка в конце объекта json.
Вывод в случае успеха: 2018-10-09 21:05:22.717 12545-12545/com.omg_indo.itmsapp D/tag: {"error":"Email doesn't exist"}
Вывод при ошибке: 2018-10-09 21:08:02.019 12545-12545/com.omg_indo.itmsapp D/tag: com.android.volley.ParseError: org.json.JSONException: Unterminated object at character 30 of {"error":"Email doesn't exist"