【发布时间】:2019-06-20 12:32:28
【问题描述】:
我正在开发一个安卓应用程序。实际上,我的数据库位于本地主机上。我已经使用 PHP 开发了我的 API。对于android studio中的登录页面,我需要检查用户登录凭据是否正确。当我想反序列化从 API 获得的 json 时,我遇到了问题;没有进入 Try 块的问题!请您检查一下并写下解决方案是什么?
我检查了我的 API 是否正常工作,并且我得到了正确的 json;这是我的一次登录尝试中的 json:
{"status":"success","user_count":1,"user":{"id":"2","username":"yasi","password":"yasi"}}
我在班级的第一个地方放了一个“日志”命令来检查班级是否被调用和启动;它启动但忽略 Try 块并转到 Catch 块。
public void jsonToUser (String jsonUser){
String username,password,user_count;
try {
JSONObject jsonObject=new JSONObject(jsonUser);
username = jsonObject.getString("username");
password = jsonObject.getString("password");
user_count=jsonObject.getString("user_count");
if(user_count.equals("1"))
{
if (!username.equals("admin"))
{
Intent intent = new Intent(getActivity(), HomePageActivity.class);
startActivity(intent);
}
else
{
Intent intent = new Intent(getActivity(), AdminHomePageActivity.class);
startActivity(intent);
}
}
else
Toast.makeText(getActivity(),"User not Found",Toast.LENGTH_LONG).show();
}
catch (JSONException e){
Log.d("error",e.getMessage());
}
}
如果我输入正确的用户登录凭据,我希望显示下一个活动。
首先,我正在处理 Fragment 而不是 Activity。
其次,这是在 OnCreateView() 中调用我的 API 的代码:
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new CheckUserLoginAsync().execute("http://10.0.2.2:80/whereToEatAPI/api/check_user_login_api.php"
,txtUsername.getText().toString()
,txtPassword.getText().toString());
【问题讨论】:
-
您是否尝试过使用调试器进行单步调试?最后执行的行是什么?
-
请粘贴您的 API 调用代码以及调用此 jsonToUser() 的位置
-
你所描述的是不可能的。如果它进入了 catch 块,则意味着它进入了 try 块并且在该块中抛出了 JSONException。异常的错误和堆栈跟踪将告诉您(和我们)问题是什么如果您阅读(发布)。
-
要获得更多详细信息,可以在您的 catch 块中执行
e.printStackTrace();。
标签: java json json-deserialization