Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过JSOUP登录摩天大楼城市论坛_Java_Spring Boot_Authentication_Jsoup - Fatal编程技术网

Java 通过JSOUP登录摩天大楼城市论坛

Java 通过JSOUP登录摩天大楼城市论坛,java,spring-boot,authentication,jsoup,Java,Spring Boot,Authentication,Jsoup,如何通过JSOUP登录摩天大楼城市论坛?我试过下面的代码,但不起作用 @Test void loginToPageTest() 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"; fin

如何通过JSOUP登录摩天大楼城市论坛?我试过下面的代码,但不起作用

@Test    
void loginToPageTest() 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://www.skyscrapercity.com/login";
    final String LOGIN_ACTION_URL = "https://www.skyscrapercity.com";
    final String USERNAME = "XXX";
    final String PASSWORD = "XXX";

    Connection.Response loginForm = Jsoup.connect(LOGIN_FORM_URL)
            .method(Connection.Method.GET)
            .userAgent(USER_AGENT)
            .execute();
    Document loginDoc = loginForm.parse(); // this is the document containing response html
    HashMap<String, String> cookies = new HashMap<>(loginForm.cookies()); 

    String authToken = loginDoc.select("#login > form > div:nth-child(1) > input[type=\"hidden\"]:nth-child(2)")
            .first()
            .attr("value");

    HashMap<String, String> formData = new HashMap<>();
    formData.put("commit", "Sign in");
    formData.put("utf8", "e2 9c 93");
    formData.put("login", USERNAME);
    formData.put("password", PASSWORD);
    formData.put("authenticity_token", authToken);

    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());


}

我得到了NullPointerException,但是这个登录代码的模式是从login到github的,所以可能有不同的HashMap属性。有人能修复这个代码吗?当我尝试用基本身份通过邮递员登录时,我收到了错误400和信息“您的客户发出了错误或非法的请求”。这就是我们所知道的。

浏览器为该登录页面返回的文本包含比HTML更多的Java脚本和其他脚本。登录表单也不使用传统的。这是我个人关于在页面中执行的想法。注意:显然不可能为您正在尝试的任务使用JSoup。。。如果没有AJAX,JSoup将不会执行脚本。此外,对于密码/登录页面,通常很难绕过安全性。。。