Как получить HTML-код страницы, которая будет загружена в веб-просмотре?

У меня есть приложение для Android, в котором мне нужно получить HTML-код страницы, которая будет загружена в веб-просмотре. Этот код мне нужно получить еще до того, как страница загрузится в веб-просмотре, и действовать соответственно.

Я пытаюсь захватить URL-адрес, который будет загружен в методе

"public void onPageStarted (представление WebView, строковый URL, значок растрового изображения)"

Но как получить HTML-код страницы, которая будет загружена в веб-просмотре?


person EnthuDeveloper    schedule 18.11.2011    source источник


Ответы (3)


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

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("website url");
HttpResponse response = httpClient.execute(httpGet, localContext);
String result = "";

BufferedReader reader = new BufferedReader(
    new InputStreamReader(
      response.getEntity().getContent()
    )
  );

String line = null;
while ((line = reader.readLine()) != null){
  result += line + "\n";

}

Второй способ,

 URL url;
    try {
        // url = new URL(data.getScheme(), data.getHost(), data.getPath());
        url = new URL("website url");
        BufferedReader rd = new BufferedReader(new InputStreamReader(
                url.openStream()));
        String line = "";
        while ((line = rd.readLine()) != null) {
            text.append(line);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
person user370305    schedule 18.11.2011
comment
это не работает для получения содержимого веб-просмотра, полезно только получить ответ веб-страницы. - person Zala Janaksinh; 18.08.2012

Использование HttpClient:

public String httpGet(String url) throws URISyntaxException,
       ClientProtocolException, IOException {
      try {

       HttpGet request = new HttpGet();

       request.setURI(new URI(url));
       response = client.execute(request);

       htmlBody = EntityUtils.toString(response.getEntity());

      } catch (Exception ex) {
      }

      return htmlBody;
     }

И есть два способа показать его в WebView, либо из файла (тогда вы должны сохранить файл с html на устройстве, что делает контент доступным в автономном режиме):

myWebView.loadUrl("file://"
                                + Environment.getExternalStorageDirectory()
                                + "/filename.html");

или вы передаете WebView строку с html:

myWebView.loadData(HTMLString, "text/html", "utf-8");

Здесь вы можете найти весь написанный мной httpClient, некоторые функции могут вам понадобиться, а некоторые нет:

http://droidsnip.blogspot.com/2011/10/custom-http-client-android.html#more

person Community    schedule 18.11.2011

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

 try {
            URL twitter = new URL(
                    "http://www.stackoverflow.com");
            URLConnection tc = twitter.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    tc.getInputStream()));

            String htmlData = "";
            String line;
            while ((line = in.readLine()) != null) {
                   htmlData = htmlData+"\n"+line;
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
person Arslan Anwar    schedule 18.11.2011