2017-10-10 25 views
-1

Je dois prendre le premier sujet 5 sur la gauche de this website. Mais je ne peux rien obtenir de ce site Web à mon application Android au android studio. J'ai ajouté la bibliothèque et la permission de jsoup pour l'Internet ainsi je ne pense pas le problème d'eux. Quand je cours le programme, progressDialog fonctionne mais il n'obtient pas des données du site Web. Cela devrait ajouter des données à listview, mais cela affichera un écran vide. Merci pour ton aide.Je ne peux pas faire de l'analyse html à partir d'un site Web dans Android Studio

Voici mon application main_activity classe:

package ahmety.wired; 

import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements; 
import java.io.IOException; 
import java.util.ArrayList; 


public class MainActivity extends AppCompatActivity { 

private ListView lv; 
public ArrayList liste= new ArrayList(); 
private ArrayAdapter<String> adapter; 
private static String URL="https://www.wired.com/"; 
private ProgressDialog progressDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    lv=(ListView)findViewById(R.id.list); 
    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,liste); 
    new VeriGetir().execute(); 
} 

private class VeriGetir extends AsyncTask<Void, Void, Void> { 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 

    progressDialog= new ProgressDialog(MainActivity.this); 
    progressDialog.setTitle("WIRED"); 
    progressDialog.setMessage("Loading.."); 
    progressDialog.setIndeterminate(false); 
    progressDialog.show(); 

} 

@Override 
protected Void doInBackground(Void... voids) { 

    try { 
     Document doc = Jsoup.connect(URL).timeout(30 * 1000).get(); 

     Elements makaleAdi = doc.select("li.card-component__description"); 

      liste.add(makaleAdi.text()); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


    return null; 
} 


@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 

    lv.setAdapter(adapter); 
    progressDialog.dismiss(); 

} 
} 
} 
+0

Utilisez le debuger et vérifier si les demandes 'GET' retourne la bonne page. Si non - le problème est avec la demande. Si oui, le problème est la façon dont vous analysez le résultat. – TDG

+0

Il semble qu'il n'y ait pas de problème dans le débogage. La dernière ligne dit dans le débogage '' Connecté à la machine virtuelle cible, adresse: 'localhost: 8615', transport: 'socket' ''. –

+0

Cela signifie que le débogueur fonctionne bien :) Avez-vous mis un point d'arrêt afin que vous puissiez inspecter les valeurs de 'doc' par exemple? – TDG

Répondre

0

mis userAgent méthode aussi:

Document doc = Jsoup.connect(URL).timeout(30 * 1000) 
       .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") 
       .get(); 
+0

Il ne résout pas le problème. –