#android #json #android-volley #jsonexception
#Android #json #android-volley #исключение jsonexception
Вопрос:
Хотя на вопрос был дан ответ, но решение у меня не работает. Я использую Volley
библиотеку здесь. Я также получаю ответ от сервера, но это все еще вызывает проблему. Ребята, пожалуйста, скажите мне, что я делаю не так?
Мой код:
StringRequest stringRequest = new StringRequest(Request.Method.POST, forgetPassword_url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("response", response);
try {
JSONArray jsonArray = new JSONArray(response);
JSONObject jsonObject = jsonArray.getJSONObject(0);
String code = jsonObject.getString("code");
if (code.equals("mail_send")) {
AlertDialog.Builder builder = new AlertDialog.Builder(Signin.this);
builder.setCancelable(false);
builder.setMessage("Password will be sent to your registered email id.");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
dialog.cancel();
EmailText.setVisibility(View.VISIBLE);
}
});
AlertDialog alert = builder.create();
alert.show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(Signin.this);
builder.setCancelable(false);
builder.setMessage("Email id is not registered.");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Комментарии:
1. Проверьте ваш ответ, я думаю, что это не массив json
2. Это ответ, который я получаю: [{«code»:»mail_send», «message»: «почта, отправленная на регистрационный идентификатор электронной почты», «Пароль»: «12345»}]
3. опубликовать полное исключение
4. 03-13 16:25:19.222 10109-10109/com.Dignc.texrecruit D/ответ: Не удалось выполнить: /usr/sbin/sendmail [{«code»:»mail_send», «message»: «почта, отправленная на регистрационный идентификатор электронной почты», «Пароль»:»12345″}] 03-13 16:25:19.222 10109-10109/ com.Dignc.texrecruit с системной ошибкой: org.json.JSONException: значение может иметь тип java.lang. Строка не может быть преобразована в JSONArray
Ответ №1:
Проблема в том, что ваш ответ находится в JSONArray, и вы выполняете строковый запрос.
Попробуйте этот метод blow.
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.GET,
mJSONURLString,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray jsonArray) {
Log.d("response", response);
try {
JSONObject jsonObject = jsonArray.getJSONObject(0);
String code = jsonObject.getString("code");
if (code.equals("mail_send")) {
AlertDialog.Builder builder = new AlertDialog.Builder(Signin.this);
builder.setCancelable(false);
builder.setMessage("Password will be sent to your registered email id.");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
dialog.cancel();
EmailText.setVisibility(View.VISIBLE);
}
});
AlertDialog alert = builder.create();
alert.show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(Signin.this);
builder.setCancelable(false);
builder.setMessage("Email id is not registered.");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
// Do something when error occurred
Snackbar.make(
mCLayout,
"Error...",
Snackbar.LENGTH_LONG
).show();
}
}
);
Комментарии:
1. позволь мне попробовать это, брат
2. замените его на forgetPassword_url.
3. да, я понял, ошибка ушла, брат. Спасибо, приятель. можете ли вы лучше объяснить, что я делаю??
4. Проблема заключалась в том, что вы выполняете StringRequest, когда получаете JSONArray, в этом случае вам нужно выполнить запрос JSONArray, а не StringRequest. Попытайтесь понять разницу между JSONArray, JSONObject и String.
5. Теперь понял, я буду помнить об этом, спасибо, добрый день.