Чтение значения скрытого поля из webview Android

#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, который нельзя открыть дважды).

В любом случае, для какой службы вы пытаетесь закодировать (если она не ваша)?