Простой вход в систему с Jsoup не работает - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь сделать простой вход на веб-сайт, и в конце я печатаю заголовок, чтобы проверить, вошел ли он в систему, однако по какой-то причине я продолжаю получать заголовок экрана входа в систему.

Response res = Jsoup
        .connect("http://moj.tvz.hr")
        .data("login", "gost", "passwd", "gost")
        .method(Method.POST)
        .execute();

Map<String, String> cookies = res.cookies();

Document subjectPage = Jsoup.connect("https://moj.tvz.hr")
        .cookies(cookies)
        .get();

String subjectTitle = subjectPage.title();
System.out.println("##### Printing webpage title #####\n" + subjectTitle + "\n");

Тестирование входа в систему на реальном сайте прекрасно работает с комбинацией user / pw, поэтому я предполагаю, что что-то не так с остальным кодом, но я не могу найти, что именно.

1 Ответ

0 голосов
/ 25 апреля 2018

Если вы посмотрите, какие данные отправляются с помощью запроса формы, например, с помощью средства отладки браузера, вы обнаружите, что для этого сайта есть дополнительный параметр TVZ.Он генерируется для вашего первоначального запроса.Вы должны разобрать его и затем добавить в форму запроса на вход.

Когда вы подключаетесь к другим страницам, вы должны добавить TVZ в качестве параметра к вашему запросу.Кроме того, вы должны использовать куки из первоначального запроса, потому что ответ на вход не возвращает.Смотрите код ниже.

        Response initResponse = Jsoup.connect("http://moj.tvz.hr").execute();
        Document doc = initResponse.parse();
        String tvz = doc.select("input[name=TVZ]").attr("value");
        Map<String, String> cookies = initResponse.cookies();

        Response res = Jsoup.connect("https://moj.tvz.hr").data("login", "gost", "passwd", "gost")//
                .data("TVZ", tvz)//
                .cookies(cookies)//
                .method(Method.POST).execute();
        System.out.println("##### Printing webpage title #####\n" + res.parse().title() + "\n");

        Document subjectPage = Jsoup.connect("https://moj.tvz.hr").data("TVZ", tvz).cookies(cookies).get();

        String subjectTitle = subjectPage.title();
        System.out.println("##### Printing webpage title #####\n" + subjectTitle + "\n");
...