java - 如何使用 JSOUP POST 表单登录?

标签 java android jsoup

我要登录https://spps.getalma.com

下面是表单来源

<form id="login-form" action="/login" method="post" autocomplete="off" class="pure-form pure-form-stacked login-form">
    <label>
        Username
        <input name="username" type="text" class="pure-input-1" placeholder="Username" value="" required="" autofocus="">
    </label>

    <label>
        Password
        <input name="password" type="password" class="pure-input-1" placeholder="Password" value="" required="">
    </label>
    <button type="submit" class="pure-button pure-button-primary">Login</button>
</form>

我正在尝试这个

public String getString(String username, String password) {
    Connection.Response loginForm = null;
    Document document = null;
    try {
        loginForm = Jsoup.connect("https://spps.getalma.com/").method(Connection.Method.GET).execute();
        document = Jsoup.connect("https://spps.getalma.com/login")
                .data("cookieexists", "false").data("username", username)
                .data("password", password).cookies(loginForm.cookies()).post();
    } catch (IOException e) {
        e.printStackTrace();
    }

    String temp = document.title();
    return temp;
}

但是当我启动应用程序并执行此方法时,我的应用程序就关闭了。 我猜测它无法正确登录,并且我不知道应该做什么才能使其正常工作..

您可以使用此用户名和密码登录
ID:paul.kim
密码:Dvjpp;[sddeptfdr,rdyrt1

它说这是由以下原因引起的:android.os.NetworkOnMainThreadException

请帮助我。 谢谢

最佳答案

使用这些方式调用下面的类

    new AsyncCaller().execute();

 private class AsyncCaller extends AsyncTask<Void, Void, String>
    {
        ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            //this method will be running on UI thread
            pdLoading.setMessage("Loading...");
            pdLoading.show();
        }
        @Override
        protected String doInBackground(Void... params) {

           String result= getString("your username","your password")


            return result;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
         pdLoading.dismiss();
        Toast.make(context,result,Toas.LENGTH_SHORT).show();
        }

        }
    }

关于java - 如何使用 JSOUP POST 表单登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44857222/

相关文章:

java - JSoup 从 <td> 标签中提取值

java - New FileReader 的 SonarQube 问题

java - java 'class' 文字如何为同一类返回 Class 对象的不同实例?

java - JSP套接字只发送一次字符串

android - 如何将 Android 工具栏对齐到屏幕底部?

android - Sasl 与安卓

java - 如何在执行 Action 的过程中延迟?

android - 获取Android开发TextView最后一行的文字

java - 检查 html 代码中的日期

java - 如何从没有 ID 或 Class 的标签中获取文本