2011-08-18 4 views
0

J'essaie d'obtenir du contenu HTML, tout fonctionne trouver sauf une chose. Il ne télécharge pas le code entier et ignore le contenu que je veux extraire (urls aux images, noms) et j'ai juste des classes vides 'obrazek'.Code source html ne pas télécharger complètement

Voici le code que j'utiliser pour obtenir le code source:

 String SourceCode(String adres) throws IllegalStateException, IOException 
{ 

    HttpClient httpClient = new DefaultHttpClient(); 
    HttpContext localContext = new BasicHttpContext(); 
    HttpGet httpGet = new HttpGet(adres); 
    HttpResponse response = null; 
    try { 
     response = httpClient.execute(httpGet, localContext); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    BufferedReader reader = new BufferedReader(
      new InputStreamReader(response.getEntity().getContent() 
        ) 
      ); 
    String result = ""; 
    while(reader.readLine() != null) 
    { 
     result += reader.readLine(); 
    } 
    reader.close(); 
    return result; 

Merci pour l'aide :)

+0

Si c'est possible, regardez Apache Commons ou un analyseur HTML pour convertir l'InputStream en String (je ne sais pas si cela fonctionne sous Android). Est beaucoup plus rapide que d'utiliser un BufferedReader. J'ai fait un webcrawler et utiliser BufferedReader était trop lent. –

Répondre

3

Vous sautez une ligne à chaque fois. devrait être

StringBuilder result = new StringBuilder(); 
String line; 
while((line = reader.readLine()) != null) 
{ 
    result.append(line); 
} 
reader.close(); 
return result.toString(); 

BTW - je StringBuilder pour éviter la création de nouvel objet String chaque itération - très recommandée.

+0

Merci! Fonctionne parfaitement :) Je n'ai pas remarqué ce bug;/ – arathunku

+0

@arathunku - vous êtes les bienvenus :) – MByD