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 - 如何给JTextArea添加渐变背景?

Android - 在 onMeasure 中更改布局子项

java - 使用Jsoup时如何获取元素的LineNumber?

java - JSoup 解析 HTML

java - libphonenumber - 在不知道国家代码的情况下格式化电话号码

java - NoClassDefFoundError 静态 vs 实例级别

java - 如何查看Word标题中的空间量?

android - 使用 Delphi XE5 for Android 创建 WifiConfiguration

android - Gradle 错误 - 无法解决在 Android Studio 中添加 TomTom Maps SDK 的问题

java - GUI 与 Jsoup 一起使用