2016-11-19 8 views
2

Мне нужно разобрать 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.

+0

Вы хотите эмулировать браузер или просто хотите разместить заявку? Зачем вам нужно разбирать форму вообще? В конце концов, вы не извлекаете никакой информации из формы в предоставленном фрагменте кода. –

+0

Мне не нужно извлекать информацию. Все, что мне нужно сделать, это проверить, действительно ли предоставленное имя пользователя и пароль действительны. Если я смогу имитировать клик, я могу проверить, действительно ли предоставленный идентификатор и пароль действительны или нет. Я знаю, что есть лучшие методы для этого, но мне нужно временно реализовать его так –

+0

Этот подход сильно зависит от характера сайта, который вы хотите исследовать. Если он возвращает ошибку (например, 404, 403, 401), вы можете просто указать имя пользователя и пароль и посмотреть ответ. См. Https://developer.android.com/reference/java/net/HttpURLConnection.html для получения нужной дорожки. Если вы ищете HttpURLConnection и HTTP POST, вы получите множество руководств о том, как данные формы POST сопоставляются с URL-адресом. –

ответ

0

Вы можете просмотреть эту ссылку. Обеспечивает хорошее answer.

шаги должны быть следующие:

  1. Получить на странице входа
  2. Разбираем HTML, используя jsoup имя пользователя и пароль
  3. Заменить его с действительным именем пользователя и паролем
  4. использовать http POST, чтобы отправить имя пользователя и пароль.
+0

Выглядит многообещающе. Я это проверю. Спасибо –

+0

Я пробовал этот пример, однако даже когда я ввожу неправильные учетные данные, он возвращает '200'. В браузере он возвращает '303', поэтому что-то кажется неправильным –

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^