(异步)数据库访问POST

时间:2018-10-15 17:50:46

标签: php android asynchronous post

我目前正在开发一个具有登录功能的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,更改了应用程序权限并将其全部放入异步子类/内部类中。现在的问题是,我必须从三个不同的活动中访问它,并且它需要将结果返回给他们,而异步任务似乎都不可能实现。我阅读了我在网上找到的所有内容,但是有很多不同的话要讲,有些是很久以前的事,所以我不确定该怎么做以及如何处理。异步任务甚至是正确的方法吗?我真的很想这样做,因为它可以处理与登录凭据同样重要的事情。

1 个答案:

答案 0 :(得分:1)

使用RESTful库,例如HTTPClient(Apache)或Google的Volley库。

编辑* PS。当您说“安全”时,这是一个很大的话题,至少建议使用众所周知的库。还建议使用HTTPS(一个经过签名/认证的域),现在...有些必要。

Google Volley / HTTPClient都愉快地使用HTTP和HTTPs协议,只剩下几行代码可以与之抗衡...而不是自己编写可能有很多漏洞的实现!

Volley(我的Android偏好设置)
Apache's HTTPClient(我偏爱后端Java)