(Асинхронный) доступ к базе данных POST - PullRequest
0 голосов
/ 15 октября 2018

В настоящее время я занимаюсь разработкой приложения для Android, которое включает функцию входа в систему.У меня есть база данных и PHP-SignUp-скрипт, который обрабатывает доступ к базе данных, настроен.Когда пользователь вводит свой адрес электронной почты и пароль, Activity вызывает метод от своего родителя и передает пароль.

 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 голосов
/ 15 октября 2018

Используйте библиотеку RESTful, такую ​​как HTTPClient (Apache) или библиотека Google Volley.

EDIT * PS.Когда вы говорите «безопасно», это довольно большая тема, и, по крайней мере, рекомендуется использовать хорошо известную библиотеку.HTTPS (подписанный / сертифицированный домен) также рекомендуется и сейчас ... несколько требуется.

Google Volley / HTTPClient успешно использует протоколы HTTP и HTTP, оставляя вам всего несколько строк кода, с которыми приходится бороться ... вместо того, чтобы писать собственную имплементацию, которая может иметь много дыр!

Залп (Мои предпочтения для Android)
HTTP-клиент Apache (Мои предпочтения для бэкенда Java)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...