2010-06-18 3 views
4

Je suis en train de télécharger un code source du site et l'afficher dans une zone de texte, mais il me semble avoir une erreur et ne peut pas le comprendre: sTélécharger la source html android?

public void getHtml() throws ClientProtocolException, IOException 
{ 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpContext localContext = new BasicHttpContext(); 
    HttpGet httpGet = new HttpGet("http://www.spartanjava.com"); 
    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"; 
     Toast.makeText(activity.this, line.toString(), Toast.LENGTH_LONG).show(); 

    } 

} 

comment se fait cela ne fonctionne pas et jeter une exception IOException?

+0

... où est-il jeter l'exception - pourrait marquer la ligne de code, s'il vous plaît, et afficher le message d'erreur? –

+0

HttpResponse response = httpClient.execute (httpGet, localContext); c'est ce qui lançait l'exception mais le commentaire de Levara l'a corrigé: D c'était une chose d'autorisation – Mars

Répondre

2

Je pense que vous avez probablement l'autorisation INTERNET dans votre manifest.xml Faites attention à <uses-permission> tag fourni dans le code ci-dessous. J'ai testé votre code en éclipse, et cela fonctionne.

BTW Je pense que l'utilisation de String result de cette façon ne fonctionnera pas. Je n'ai pas testé si loin. Mais je pense que vous ne pouvez pas simplement ajouter une chaîne à une chaîne. Vous devez utiliser stringBuilder et ajouter de nouvelles chaînes.

EDIT: testé ce String result metod, et cela fonctionne. Peut-être que le problème est que vous essayez de jeter autant de toast tout à la fois. Votre code jette un toast pour chaque ligne de code html récupéré. J'ai mis votre méthode getHtml() à la chaîne de caractères, et pour renvoyer result, et il l'a renvoyé correctement ... Je ne peux pas penser à toute autre raison d'exception, excepté l'autorisation INTERNET manquant dans votre AndroidManifest.xml ....

À la votre!

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="test.test.test" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> 
    <activity android:name=".test" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
<uses-sdk android:minSdkVersion="3" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

+0

merci bien que je n'ai pas encore testé le code parce que je ne suis pas sur mon ordinateur portable maintenant mais. Je pense que vous venez de le résoudre: D merci =) – Mars

+0

ça marche maintenant et tout ce que j'ai fait était de changer les autorisations ... J'utilisais le toast pour tester le téléchargement: D – Mars