2011-11-18 1 views
0

J'ai une application android dans laquelle j'ai besoin d'obtenir le code HTML de la page qui sera chargée dans le webview. Ce code, je dois l'obtenir avant même que la page ne se charge dans le webview et agir en conséquence.Comment obtenir le code HTML de la page qui serait chargée dans webview?

Je suis en train de saisir l'URL qui serait chargé dans la méthode

"public void onPageStarted (vue WebView, String url, Bitmap favicon)"

Mais quelle est la façon d'obtenir le code HTML code de la page qui serait chargé dans le webview?

Répondre

0

Je ne sais pas comment obtenir le contenu WebView, mais je me sers de ce code de page web pour

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"; 

} 

La deuxième méthode est,

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(); 
    } 
+0

cela ne fonctionne pas pour obtenir le contenu Webview il s 'utile seulement obtenir la réponse de la page Web . –

0

Je ne trouvé une fonction webview pour obtenir des données HTML. J'ai trouvé cela utile.

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(); 
     } 
2

Utilisant 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; 
    } 

Et il y a deux façons de le montrer dans le WebView, soit à partir du fichier (alors que vous êtes censé enregistrer un fichier HTML sur le périphérique e, ce qui rend la content d'être disponible hors connexion):

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

ou vous nourrissez WebView une chaîne html:

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

Ici vous trouverez tout le httpClient écrit par moi, certaines fonctions dont vous avez besoin, d'autres non:

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

Questions connexes