我目前正在开发一个具有登录功能的android应用。我有一个数据库和一个处理数据库访问的PHP-SignUp-script,设置了。当用户输入其电子邮件地址和密码时,“活动”会从其父级调用一个方法并将密码传递过来。
public void checkCredentials(View view){
StringBuilder builder = new StringBuilder();
String emailInput = ((EditText)(findViewById(R.id.editTextEmail))).getText().toString();
String passwordInput = ((EditText)(findViewById(R.id.editTextPassword))).getText().toString();
try {
builder.append(URLEncoder.encode("password", "UTF-8"));
builder.append("=");
builder.append(URLEncoder.encode(passwordInput, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String emailOutput = PostScreenActivity.dataBaseAccess("signIn", builder.toString());
}
此方法POST到脚本并获取与密码关联的用户名,以便可以将其返回给调用方方法,该方法将其与输入的用户名进行比较。
StringBuilder builder = new StringBuilder();
try {
URL url = new URL("https://database.de/url/to/script"+script+".php");
URLConnection connection = url.openConnection();
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream());
osw.write(data);
BufferedReader reader = new BufferedReader((new InputStreamReader(connection.getInputStream())));
String line;
while ((line = reader.readLine()) != null){
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
我最初只是通过普通方法使用它,但是我立即使应用程序崩溃,因此我查看了SO,更改了应用程序权限并将其全部放入异步子类/内部类中。现在的问题是,我必须从三个不同的活动中访问它,并且它需要将结果返回给他们,而异步任务似乎都不可能实现。我阅读了我在网上找到的所有内容,但是有很多不同的话要讲,有些是很久以前的事,所以我不确定该怎么做以及如何处理。异步任务甚至是正确的方法吗?我真的很想这样做,因为它可以处理与登录凭据同样重要的事情。
答案 0 :(得分:1)
使用RESTful库,例如HTTPClient(Apache)或Google的Volley库。
编辑* PS。当您说“安全”时,这是一个很大的话题,至少建议使用众所周知的库。还建议使用HTTPS(一个经过签名/认证的域),现在...有些必要。
Google Volley / HTTPClient都愉快地使用HTTP和HTTPs协议,只剩下几行代码可以与之抗衡...而不是自己编写可能有很多漏洞的实现!
Volley(我的Android偏好设置)
Apache's HTTPClient(我偏爱后端Java)