Вход на сайт с помощью приложения Android (Java) - PullRequest
0 голосов
/ 19 апреля 2020

В настоящее время я пытаюсь создать приложение, которое позволит вам войти в свою учетную запись и просмотреть любые данные, которые необходимо отобразить.

Я не использую веб-просмотр, но вместо этого для отображения информации я буду разбирать данные из HTML, а затем работают оттуда, извлекая данные, которые мне нужно отобразить. Я опубликую код из моего приложения ниже.

Мне нужна помощь, чтобы выяснить, как войти на веб-сайт с помощью моего приложения.

По сути, шаги будут выглядеть так:

1.Введите имя пользователя

2.Введите пароль

3.Нажмите кнопку входа

4.Отправьте имя пользователя и пароль на сайт

5.If - веб-сайт возвращает «Успешный вход в систему», продолжайте и анализируйте следующую страницу с HTML, иначе - отобразите «Неверное имя пользователя или пароль»

Однако я не знаю, как сделать так, чтобы мое приложение вошло в систему или, по крайней мере, введите данные в поля для входа на веб-сайт, чтобы я мог хотя бы каким-то образом получить ответ.

Я очень новичок в этом, поэтому, пожалуйста, по крайней мере, укажите мне правильное направление, чтобы я мог понять это вне. Большое спасибо.

    package com.example.app;

    import androidx.appcompat.app.AppCompatActivity;

    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;

    public class MainActivity extends AppCompatActivity {
        String data;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            TextView LoginTitle = findViewById(R.id.tvLoginTitle);
            EditText Username = findViewById(R.id.etUsername);
            EditText Password = findViewById(R.id.etPass);
            Button Login = findViewById(R.id.btLogin);

            Login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new Parse().execute();
                    Intent intent = new Intent(MainActivity.this,UserAccount.class);
                    intent.putExtra("data",data);
                    startActivity(intent);
                }
            });

        }

        public class Parse extends AsyncTask<Void, Void, Void> {
            @Override
            protected Void doInBackground(Void... voids) {
                try {
                    Document WebPage = Jsoup.connect("https://myurl").get();
                    Log.d("data", WebPage.toString());
                    data=WebPage.toString();
                } catch(Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            //Used in guide, however, my implementation of the app doesn't seem to need this.
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Я не уверен, что вы пытаетесь сделать, зарегистрировав там содержимое веб-страницы. Что вам нужно сделать, это проверить первым, если «браузер» имеет Javascript включен, но в вашем случае это спорный вопрос, потому что вы используете свой собственный WebView. Было бы разумно просто проверить, включен ли JS.

Следующим шагом, очевидно, является использование JS, поскольку я попросил вас проверить, включен ли он. Вот код, но обратите внимание, что я не проверял это, но это шаг в правильном направлении:

    public void loginUser(View view) {

        InputMethodManager inputMan = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(layout.getWindowToken(), 0);


        webView.loadUrl("https://yourwebsite.net");
        webView.setVisibility(View.INVISIBLE);
        webView.setWebViewClient(new WebViewClient() {

            public void onPageFinished(WebView view, String url) {
                webView.loadUrl("javascript: {" + "document.getElementById('login_account').value = '" + "USERNAME" + "';" + "document.getElementById('login_password').value = '" + "PASSWORD" + "';" + "document.getElementById('submit').click();" + "};");
                 }

            public void onPageFinished2(WebView view, String url) {
                webView.loadUrl(url);
            }
        });

        webView.clearCache(true);
        webView.clearHistory();


    WebView webView2 = (WebView) this.findViewById(R.id.web_view);

    String url = "https://yourwebsite.net";
    webView2.loadUrl(url);

}

Некоторые моменты, на которые следует обратить внимание: измените значения login_account и login_password на то, что человек не может легко угадать безопасность.

0 голосов
/ 19 апреля 2020

Для этого вам нужно создать RESTful API. Здесь - ссылка на учебник

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