简体   繁体   English

使用jsoup进行Android登录

[英]Android login using jsoup

activity 活动

public class LoginActivity extends AppCompatActivity {
    String url = "http://aluno.cefsa.edu.br/Login/Login";
    ProgressDialog mProgressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Button btn_login = (Button) findViewById(R.id.btn_login);

    btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new Title().execute();
        }
    });
}

private class Title extends AsyncTask<Void, Void, Void>
{
    String title;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog = new ProgressDialog(LoginActivity.this);
        mProgressDialog.setTitle("Portal CEFSA");
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {

        try {
            org.jsoup.Connection.Response res = Jsoup.connect("aluno.cefsa.edu.br/login")
                    .followRedirects(true)
                    .method(org.jsoup.Connection.Method.GET)
                    .execute();

            TextView txt_senha = (TextView) findViewById(R.id.txt_senha);
            TextView txt_ra = (TextView) findViewById(R.id.txt_ra);


            String usuario = txt_ra.toString();
            String senha = txt_senha.toString();

            Document document = (Document) Jsoup.connect(url)
                    .followRedirects(true)
                    .cookies(res.cookies())
                    .method(org.jsoup.Connection.Method.POST)
                    .data("Usuario", usuario.trim())
                    .data("Senha", senha.trim())
                    .data("go", "")
                    .execute();

        } catch (IOException e) {
            e.printStackTrace();
        }

        /*
        try {
            // Connect to the web site
            Document document = Jsoup.connect(url).get();
            // Get the html document title
            title = document.title();
        } catch (IOException e) {
            e.printStackTrace();
        }
        */
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {



        // Set title into TextView
        TextView txt_teste = (TextView) findViewById(R.id.txt_teste);
        txt_teste.setText(title);
        mProgressDialog.dismiss();
    }
}

} }

XML XML格式

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
tools:context="com.destudios.tmedias.LoginActivity"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="81dp">

<ImageView
    android:id="@+id/img_logo"
    android:layout_width="95dp"
    android:layout_height="73dp"
    android:contentDescription="@string/logo_description"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.501"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline"
    app:srcCompat="@mipmap/ic_launcher_round" />

<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="32dp"
    android:inputType="number"
    app:layout_constraintEnd_toStartOf="@+id/guideline3"
    app:layout_constraintStart_toStartOf="@+id/editText"
    app:layout_constraintTop_toBottomOf="@+id/img_logo" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="25dp"
    android:layout_marginStart="8dp"
    android:paddingRight="5dp"
    android:text="RA:"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    app:layout_constraintBaseline_toBaselineOf="@+id/autoCompleteTextView"
    app:layout_constraintEnd_toStartOf="@+id/editText"
    app:layout_constraintStart_toStartOf="@+id/textView2" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:paddingRight="5dp"
    android:text="Senha:"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    app:layout_constraintBaseline_toBaselineOf="@+id/editText"
    app:layout_constraintStart_toStartOf="@+id/guideline2" />

<EditText
    android:id="@+id/editText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="32dp"
    android:ems="10"
    android:inputType="textPassword"
    app:layout_constraintEnd_toStartOf="@+id/guideline3"
    app:layout_constraintStart_toEndOf="@+id/textView2"
    app:layout_constraintTop_toBottomOf="@+id/autoCompleteTextView" />

<Button
    android:id="@+id/btn_login"
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:text="Login"
    android:textColor="@android:color/black"
    app:layout_constraintEnd_toStartOf="@+id/guideline3"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/guideline2"
    app:layout_constraintTop_toBottomOf="@+id/editText" />

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.1" />

<android.support.constraint.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.04" />

<android.support.constraint.Guideline
    android:id="@+id/guideline3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.9609375" />

<TextView
    android:id="@+id/txt_teste"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="20dp"
    android:text="TextView"
    app:layout_constraintEnd_toStartOf="@+id/guideline3"
    app:layout_constraintStart_toStartOf="@+id/guideline2"
    app:layout_constraintTop_toBottomOf="@+id/btn_login" />

</android.support.constraint.ConstraintLayout>

Logcat Logcat

10/02 12:34:14: Launching app
$ adb install-multiple -r -t C:\Users\fabio\Desktop\Curso android 
arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_2.apk 
C:\Users\fabio\Desktop\Curso android 
arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_9.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_3.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_4.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\dep\dependencies.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_5.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_0.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_1.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_7.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_6.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\intermediates\split-apk\debug\slices\slice_8.apk 
C:\Users\fabio\Desktop\Curso android arquivos\TMedias\app\build\outputs\apk\debug\app-debug.apk 
Split APKs installed
$ adb shell am start -n "com.destudios.tmedias/com.destudios.tmedias.LoginActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Connected to process 2855 on device emulator-5554
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/System: ClassLoader referenced unknown path: /data/app/com.destudios.tmedias-1/lib/x86
I/InstantRun: starting instant run server: is main process
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D/OpenGLRenderer: Swap behavior 0
D/EGL_emulation: eglCreateContext: 0xa64f3320: maj 2 min 0 rcv 2
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
I/art: Do partial code cache collection, code=27KB, data=31KB
I/art: After code cache collection, code=27KB, data=31KB
I/art: Increasing code cache capacity to 128KB
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
              Process: com.destudios.tmedias, PID: 2855
              java.lang.RuntimeException: An error occurred while executing doInBackground()
                  at android.os.AsyncTask$3.done(AsyncTask.java:325)
                  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                  at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                  at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                  at java.lang.Thread.run(Thread.java:761)
               Caused by: java.lang.IllegalArgumentException: Malformed URL: aluno.cefsa.edu.br/login
                  at org.jsoup.helper.HttpConnection.url(HttpConnection.java:101)
                  at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:43)
                  at org.jsoup.Jsoup.connect(Jsoup.java:73)
                  at com.destudios.tmedias.LoginActivity$Title.doInBackground(LoginActivity.java:51)
                  at com.destudios.tmedias.LoginActivity$Title.doInBackground(LoginActivity.java:34)
                  at android.os.AsyncTask$2.call(AsyncTask.java:305)
                  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                  at java.lang.Thread.run(Thread.java:761) 
               Caused by: java.net.MalformedURLException: no protocol: aluno.cefsa.edu.br/login
                  at java.net.URL.<init>(URL.java:589)
                  at java.net.URL.<init>(URL.java:486)
                  at java.net.URL.<init>(URL.java:435)
                  at org.jsoup.helper.HttpConnection.url(HttpConnection.java:99)
                  at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:43) 
                  at org.jsoup.Jsoup.connect(Jsoup.java:73) 
                  at com.destudios.tmedias.LoginActivity$Title.doInBackground(LoginActivity.java:51) 
                  at com.destudios.tmedias.LoginActivity$Title.doInBackground(LoginActivity.java:34) 
                  at android.os.AsyncTask$2.call(AsyncTask.java:305) 
                  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                  at java.lang.Thread.run(Thread.java:761) 
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)

             [ 10-02 15:34:47.296  1647: 3330 D/         ]
             HostConnection::get() New Host Connection established 0x9a3b0780, tid 3330


             [ 10-02 15:34:47.296  1647: 3330 W/         ]
             Unrecognized GLES max version string in extensions: ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
D/OpenGLRenderer: endAllActiveAnimators on 0x98fa7f00 (InsetDrawable) with handle 0x98f0be30
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
D/EGL_emulation: eglMakeCurrent: 0xa64f3320: ver 2 0 (tinfo 0xa649d870)
E/WindowManager: android.view.WindowLeaked: Activity com.destudios.tmedias.LoginActivity has leaked window DecorView@d25a20b[Portal CEFSA] that was originally added here
                 at android.view.ViewRootImpl.<init>(ViewRootImpl.java:418)
                 at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331)
                 at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
                 at android.app.Dialog.show(Dialog.java:322)
                 at com.destudios.tmedias.LoginActivity$Title.onPreExecute(LoginActivity.java:44)
                 at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:620)
                 at android.os.AsyncTask.execute(AsyncTask.java:567)
                 at com.destudios.tmedias.LoginActivity$1.onClick(LoginActivity.java:29)
                 at android.view.View.performClick(View.java:5637)
                 at android.view.View$PerformClick.run(View.java:22429)
                 at android.os.Handler.handleCallback(Handler.java:751)
                 at android.os.Handler.dispatchMessage(Handler.java:95)
                 at android.os.Looper.loop(Looper.java:154)
                 at android.app.ActivityThread.main(ActivityThread.java:6119)
                 at java.lang.reflect.Method.invoke(Native Method)
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                 at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Application terminated.

I have researched many things about jsoup, examples and everything, but I can not log in to this site . 我已经研究了有关jsoup的许多内容,示例以及所有内容,但是我无法登录该站点

I created an app as a login screen but I do not know how to do the post from my app to the site and get the page to where it is redirected 我创建了一个应用程序作为登录屏幕,但是我不知道如何将应用程序中的帖子发布到网站上,以及如何将页面重定向到该页面

When I click on it it sends a request to "aluno.cefsa.edu.br/Login/Login" through a post 当我单击它时,它会通过帖子将请求发送到“ aluno.cefsa.edu.br/Login/Login”

Could someone help me make the application request from the app to the site 有人可以帮我从应用程序向网站提出应用程序请求吗

    Caused by: java.net.MalformedURLException: no protocol: aluno.cefsa.edu.br/login

未设置协议,您必须在网址中添加http://或https://

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM