我正在对API进行Android登录调用,响应可能是两个不同的json:
A.- Json错误 {“message”:“not found”,“error”:“Unauthorized”,“status”:401}
B.-Json成功 { “权限”:10 “ac_status”: “活跃”}
我的想法是在检查Json标签后返回主屏幕中的三个(int)值之一:
如果错误获得JSON(如服务器关闭),则返回0 如果登录成功,则返回1 如果登录错误(服务器错误,JSON为空)
,则返回2我在AsyncTask上尝试这样的东西,它可以工作,但我总是得到0服务器错误和登录成功。我怎么能这样做?谢谢你提前。
@Override
protected Void doInBackground(Void... params) {
...
...
int valueReturn =0;
JSONObject response = jsonService.call(url);
try {
if (response.getString("TAG_ERROR")
valueReturn = 2;
else
valueReturn= 1;
} catch (JSONException e) {
valueReturn = 0;
}
答案 0 :(得分:1)
有效,但我总是因服务器错误和登录成功而获得0。
因为提供的JSON字符串中不存在TAG_ERROR
键所以控制总是在catch块中。
How I can do it?
在访问值之前,使用JSONObject.has(String KEY_NAME)检查密钥是否存在:
if (response.has("error"){
// server error
}else if (response.has("ac_status"){
// login success
}else{
//error getting Json
}