Мне нужно разобрать HTML-элементы с веб-страницы на Java, заполнить форму и отправить ее для имитации входа.Анализ и выполнение HTML в Android
Я занимаюсь небольшим исследованием, и вот что я сделал, используя библиотеку jsoup
.
Однако после реализации этого я понял, что jsoup
предназначен только для синтаксического анализа и не может выполнять нажатие кнопки, например.
В этом примере мне нужно выполнить щелчок по элементу submitButton
.
try {
Document htmlDoc = Jsoup.connect(MY_URL).get();
Element loginForm = htmlDoc.getElementById("login-form");
Element usernameField = loginForm.getElementById("username");
Element passwordField = loginForm.getElementById("passwd");
Element submitButton = loginForm.getElementById("submit");
usernameField.val(username);
passwordField.val(password);
// I need to simulate `submitButton` click so I can login
} catch (Exception e) {
Log.e("TAG", e.toString());
}
Am Я правильно в моем понимании, что jsoup
не способен это сделать?
Если да, есть ли библиотека для Android, которая может?
Я понимаю, что существует много библиотек Java, но большинство из них не могут работать с Android (например, HtmlUtil) из-за ограничения javax
.
Вы хотите эмулировать браузер или просто хотите разместить заявку? Зачем вам нужно разбирать форму вообще? В конце концов, вы не извлекаете никакой информации из формы в предоставленном фрагменте кода. –
Мне не нужно извлекать информацию. Все, что мне нужно сделать, это проверить, действительно ли предоставленное имя пользователя и пароль действительны. Если я смогу имитировать клик, я могу проверить, действительно ли предоставленный идентификатор и пароль действительны или нет. Я знаю, что есть лучшие методы для этого, но мне нужно временно реализовать его так –
Этот подход сильно зависит от характера сайта, который вы хотите исследовать. Если он возвращает ошибку (например, 404, 403, 401), вы можете просто указать имя пользователя и пароль и посмотреть ответ. См. Https://developer.android.com/reference/java/net/HttpURLConnection.html для получения нужной дорожки. Если вы ищете HttpURLConnection и HTTP POST, вы получите множество руководств о том, как данные формы POST сопоставляются с URL-адресом. –