我有一个 POST 请求代码,由于某种原因不起作用

问题描述 投票:0回答:1

发送了所有隐藏值,发送了正确的登录详细信息,发送了cookie,但它仍然不起作用。我看过一些教程,但我觉得给出的示例不太简单,而且我对 Jsoup 还很陌生。

import java.io.IOException;
import java.util.HashMap;

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

public class example{
    public static void main( String[] args ) throws IOException{
        final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36";
        final String LOGIN_FORM_URL = "https://login.gitam.edu/Login.aspx";
        final String LOGIN_ACTION_URL = "https://login.gitam.edu/Login.aspx";
        final String USERNAME = "mysusername";
        final String PASSWORD = "mypassword";
        Connection.Response loginForm = Jsoup.connect(LOGIN_FORM_URL)
                .method(Connection.Method.GET)
                .userAgent(USER_AGENT)
                .execute();
        HashMap<String, String> cookies = new HashMap<>(loginForm.cookies());
        Document loginDoc = loginForm.parse();
        String viewstategenerator = loginDoc.getElementById("__VIEWSTATEGENERATOR").val();
        String eventtarget = loginDoc.getElementById("__EVENTTARGET").val();
        String eventargument = loginDoc.getElementById("__EVENTARGUMENT").val();
        String viewstate = loginDoc.getElementById("__VIEWSTATE").val();
        String eventvalidation = loginDoc.getElementById("__EVENTVALIDATION").val();
        HashMap<String, String> formData = new HashMap<>();
        formData.put("__VIEWSTATEGENERATOR", viewstategenerator);
        formData.put("__EVENTTARGET", eventtarget);
        formData.put("__EVENTARGUMENT", eventargument);
        formData.put("__VIEWSTATE", viewstate);
        formData.put("__EVENTVALIDATION", eventvalidation);
        formData.put("txtusername", USERNAME);
        formData.put("password", PASSWORD);
        formData.put("Submit", "Login");
        Connection.Response homePage = Jsoup.connect(LOGIN_ACTION_URL)
                .cookies(cookies)
                .data(formData)
                .method(Connection.Method.POST)
                .userAgent(USER_AGENT)
                .execute();



        System.out.println(homePage.parse().html());

    }
}

我已经发送了 cookie、所有其他隐藏值,但我仍然没有得到我想要的输出。 (我只想要登录后页面的html源)。

java html post request jsoup
1个回答
0
投票

这就是我如何让它发挥作用。

使用了 requestsBeautifulSoup 包。 使用来自请求的会话。 Session 负责处理所有 cookie 和标头,我能够登录而无需担心 cookie 和标头。 然后我就可以从登录后的页面获取任何信息。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.