- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自从我上次尝试申请以来已经太久了,我自己似乎无法得到答案。我需要让用户在登录时在我的应用程序中输入密码和用户名,我想通过在 PHP Myadmin 中搜索数据库来做到这一点。
我已经将代码提升到(我认为)它应该接近完成的水平,但我不明白其中的逻辑。
我需要计算 if 语句来比较用户通过 JSONArray 输入到数据库中的用户名和密码,此外,如果代码仍然无法正常工作,我们将不胜感激 :)
if 语句标有 ----> 我知道我需要某种形式的 for 循环来遍历和比较值,但这是我从未处理过的事情。
这是我的登录屏幕的代码:
public class HomeScreen extends Activity implements OnClickListener {
private ProgressDialog m_ProgressDialog = null;
EditText editText1;
EditText editText2;
String clear1;
String user;
String password;
URL url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
View loginBTN = findViewById(R.id.button1);
loginBTN.setOnClickListener(this);
editText1=(EditText)findViewById(R.id.editText1);
editText2=(EditText)findViewById(R.id.editText2);
clear1 ="";
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home_screen, menu);
return true;
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
user = editText1.getText().toString();
password = editText2.getText().toString();
if ( editText1 != null && editText1.length() != 0 && editText2 != null && editText2.length() != 0){
getData();
m_ProgressDialog = ProgressDialog.show(HomeScreen.this,
"Please wait...", "Checking Details...", true);
m_ProgressDialog.setCancelable(true);
if(testData()) {
Intent i = new Intent(this, Afterlog.class);
startActivity(i);
}
else{
Toast.makeText(HomeScreen.this, "The username and password did not match any in our database...", Toast.LENGTH_SHORT).show();
}
}
else {
Toast.makeText(HomeScreen.this, "Please enter a user name AND a password...", Toast.LENGTH_SHORT).show();
}
break;
}
}
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public static JSONArray readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONArray json = new JSONArray(jsonText);
return json;
} finally {
is.close();
}
}
public void getData() {
try{
json = readJsonFromUrl("http://localhost/indextest.php?function=getdata");
Thread.sleep(1000);
} catch (Exception e) {
Log.e("BACKGROUND_PROC", e.getMessage());
}
}
public boolean testData() {
getData();
user = editText1.getText().toString();
password = editText2.getText().toString();
for (int i = 0; i < json.length(); i++) {
JSONObject currentObject = json.getJSONObject(i);
if (currentObject.getString("username", "").equals(user) && currentObject.getString("password", "").equals(password))
return true;
}
return false;
}
最佳答案
您想对用户进行身份验证吗?如果是这样,那么我认为这不是正确的方法。您应该将用户名和密码发送到服务器(可能是加密的),然后服务器将检查用户名和密码是否匹配并回复您一个简单的 JSON,例如:
{
response: 1
}
表示认证成功(否则为0,例如)。
如果您只想从 JSON 对象获取数据,我建议您将 JSONArrayObject
更改为 JSONObject 并从中检索数据,您可以这样做:
JSONObject json = getData(); // getData now returns a JSONObject
String username = json.getString ("username");
我假设一个像这样的 JSON:
{
username: "Foo",
password: "123"
}
////编辑--------------------------------
您可以让 getDate 函数检查它是否已经匹配,如果匹配则返回 true 或 false。像这样:
public boolean getDate() {
// Get your data and put it into a JSONArray
for (int i = 0; i < json.length(); i++) {
JSONObject currentObject = json.getJSONObject(i);
if (currentObject.getString("username").equals(user) && currentObject.getString("password").equals(password))
return true;
}
return false;
}
您的 JSON 必须类似于:
[
{
username: "Foo1",
password: "123"
},
{
usernmae: "Foo2",
password: "123"
}, ...
]
那么你的 if 就是:
if(getData()) {
Intent i = new Intent(this, Afterlog.class);
startActivity(i);
}
关于java - 尝试在 android 中通过 JSONarray 验证密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062898/
我正在使用网络服务请求直方图数据。数据是数组中的一组数组: [[1375056000000,23.284713745117],[1375142400000,3.809531211853], [1375
这是我的 json 文件的相关部分: "categories": [ [ "Belgian Restaurant", "belgian" ],
我目前很困惑,为什么我不能在我的 Android 应用程序中从 JSONArray 中提取 JSONArray。下面给出了一个示例和我的源代码片段。 //The JSON { "cur
我正在尝试解析 JSONObject。 这个 JSONObject 中有一个 JSONArray,它在 JSONArray 中还有另一个 JSONArray。 我试图解析的 json 形式如下。 {
我正在尝试解析对象数据列表中的 JSON 数组 payment_details。 在这里,我已经成功解析了回收站 View 中调用的数据数组,但我无法调用 payment_details 数组。 适配
我正在寻找一个选项,可以将多个值添加到 JSONArray 并将其添加到另一个 JSONArray 中,而无需创建多个变量。例如: JSONArray array1 = new JSONArr
我遇到过一种情况,org.json.JSONArray 对象非常大,这最终会导致延迟和其他问题。因此,我们决定将 JSONArray 分割成更小的 block 。例如,如果 JSONArray 是这样
您好,我正在尝试在另一个 json 数组中解析一个 json 数组。帮我解决这个问题。 我的 Json 数组是 "results":[ { "percentcompleted"
我正在使用 Gson用于解析 json 响应。我需要在 JsonArray 中解析 JSONArry.. 我的回答是.. { "message": "Retreive sucessfully", "f
@GET @Produces("application/json") public Response GetAll() throws JSONException{ tblCategoryDao
我从服务器获取以下 json: { "Data": [ { "Record": [ " d11", "d12"
我正在使用 ajax 将 json 对象从 javascript 传递到 java servlet。 var jsonObj = JSON.stringify(objArray); //Then I
我需要获取作为“结果”内部数组的“示例”数据 JSON FILE 并将其附加到字符串。最简单的方法是什么? 这就是我得到“定义”的方式 private JSONObject queryResults;
我需要从 JSONArray 获取 JSONArray: JSONParser parser = new JSONParser(); JSONObject jObject=(J
我有一个 jsonArray 响应。我需要阅读此响应,其中包含 3 个 jsonArray。 这是 json 响应。这是一个 GET 请求并通过 Volley 请求发送。 [ "0x9000",
在此 Json 响应中,如何使用 Java 访问“smallImageUrls”并获取图像 url? 似乎“smallImageUrls”是“匹配”jsonarray 中的一个数组。如果我错了,请有人
这个问题在这里已经有了答案: Convert string to JSON array (10 个答案) 关闭 5 年前。 如何正确地将此字符串转换为 jsonArray? { "myArr
是否可以从较新的 EJB JSON 库转换为较旧的 org.json 库,而无需依赖 org.json.simple 或 GSON? 在下面的例子中,“buttons”是一个填充的 JsonArr
如何从jsonarray获取jsonarray? 我试过的代码。 for(loop) List stringList = new ArrayLis
我目前是 Json 新手,遇到了一个问题。我搜索了很多但找不到答案! 我从 json url 获取名称列表。名称可以在此 json 文件中重复,但我只想将它们的一条记录保留到我称为“arr”的新数组中
我是一名优秀的程序员,十分优秀!