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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 18 ноября 2011

Использование 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

0 голосов
/ 18 ноября 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();
        }
0 голосов
/ 18 ноября 2011

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

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...