#android #webview #hidden-field
#Android #webview #скрытое поле
Вопрос:
Я создаю приложение, в котором есть страница регистрации пользователя. Эта страница загружается с URL-адреса в моем webview, на котором есть кнопка отправки. После отправки формы он выдает мне одно скрытое поле в следующем URL с идентификатором пользователя. Моя проблема в том, что я хочу прочитать это значение скрытого поля с этого URL-адреса в моем приложении для Android.
Я попытался использовать следующую функцию для получения события загрузки страницы.
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>' document.getElementsById('userId').innerHTML '</head>');");
}
Тогда мой метод showHtml выглядит следующим образом
class MyJavaScriptInterface
{
@SuppressWarnings("unused")
public void showHTML(String html)
{
System.out.println("HTML " html);
}
}
Тем не менее, я не могу получить данные HTML-страницы, загруженные после регистрации пользователя.
Может ли кто-нибудь, пожалуйста, указать мне, что я здесь делаю не так? или это не тот способ, которым я должен получить данные скрытого поля.
Комментарии:
1. Если HTML страницы допустим, вы могли бы попробовать использовать синтаксический анализатор SAX или что-то еще для анализа HTML. Затем вы могли бы изолировать свое скрытое поле и получить его значение. Кроме того, если служба, которая возвращает скрытое поле, принадлежит вам, вы могли бы заставить ее возвращать XML-файл (чтобы легко проанализировать его) или вы могли бы использовать что-то вроде сокетов для выполнения вашей регистрации.
2. Моя проблема в том, что я не могу читать HTML-данные или поток из-за того, что у меня нет контроля над указанным URL-адресом в моем webview
Ответ №1:
Вы могли бы использовать ‘getProgress()‘-метод, чтобы проверить, загрузился ли сайт. После этого вы могли бы использовать ‘getURL()‘, например, метод ‘getOriginalURL()‘, чтобы получить URL-адрес, по которому вы затем можете настроить анализатор на чтение значения из вашего скрытого поля.
Если это работает с сервисом (возможно, это одноразовый URL, который нельзя открыть дважды).
В любом случае, для какой службы вы пытаетесь закодировать (если она не ваша)?