如果我得到json响应就好了那么我需要继续进行,如果我得到任何错误然后我想在Toast或Alert对话框中只打印那个错误,但它不工作。任何人请告诉我什么是我的第二个if条件在代码中的问题?是不是能够举杯祝酒?
这是我遇到错误的json结果
{“result”:“错误”,“错误”:“无效参数”}
我需要在Toast或Alert对话框中显示无效参数。
protected void onPostExecute(String result) {
prgDialog.hide();
Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
try {
JSONObject json = new JSONObject(result);
String respResult=json.getString("result");
String respId=json.getString("customer_id");
String respEmail=json.getString("customer_email");
String respError=json.getString("error");
session.createUserLoginSession(respId, respEmail);
if(respResult.equals("ok")) {
Intent I = new Intent();
I.setClass(getApplicationContext(), MainActivity.class);
startActivity(I);
finish();
}
if(respResult.equals("error")) {
Toast.makeText(getBaseContext(), respError, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:1)
您的代码正在获取异常,因为您在出现错误时获得的响应json,不包含以下参数
"customer_id"
"customer_email"
像这样编写代码
try {
JSONObject json = new JSONObject(result);
String respResult=json.getString("result");
if(respResult.equals("ok")) {
String respId=json.getString("customer_id");
String respEmail=json.getString("customer_email");
session.createUserLoginSession(respId, respEmail);
Intent I = new Intent();
I.setClass(getApplicationContext(), MainActivity.class);
startActivity(I);
finish();
}
if(respResult.equals("error")) {
String respError=json.getString("error");
Toast.makeText(getApplicationContext(), respError, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 1 :(得分:0)
为什么你把错误变量放在上面?它应该是
protected void onPostExecute(String result) {
prgDialog.hide();
Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
try {
JSONObject json = new JSONObject(result);
String respResult=json.getString("result");
if(respResult.equals("ok")) {
String respId=json.getString("customer_id");
String respEmail=json.getString("customer_email");
session.createUserLoginSession(respId, respEmail);
Intent I = new Intent();
I.setClass(getApplicationContext(), MainActivity.class);
startActivity(I);
finish();
}
if(respResult.equals("error")) {
String respError=json.getString("error");
Toast.makeText(getApplicationContext(), respError, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 2 :(得分:0)
问题是您应该使用 getApplicationContext()而不是 getBaseContext()。第一个应用程序运行时始终可用,第二个应用程序不再可用。如您的代码中所示,您在AsyncTask中的onPostExecute()中,那时您的上下文(活动?)无法使用。