IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Comment lire le contenu d'une URL (http://www.mondomain.com) comme pour les fichiers ?


Sujet :

Android

  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 9
    Par défaut Comment lire le contenu d'une URL (http://www.mondomain.com) comme pour les fichiers ?
    Bonjour,

    Voici mon but:
    Lire le contenu d'une page web (le mien) et la transmettre dans une variable.
    Pour faire du "parcing" après et l'affiché a ma convenance.

    Niveau de connaissance: Novice

    Voici mon environnement de travaille:
    IDE Eclipse version: Indigo Release
    SDK Android
    Émulateur Android API 2.2

    Mon code:
    ----------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package com.android.snmp;
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    import java.net.*;
     
    public class Snmp extends Activity
    {
    	private String infoURL(String args) throws IOException {
    		URL u = new URL(args);
            BufferedInputStream bis = new BufferedInputStream(u.openStream());
     
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("output.txt")));
    while(bis.available() != 0)
    {
            byte[] data = new byte[bis.available()];
            System.out.println("Data length : " + data.length);
            bis.read(data, 0, data.length);
            bos.write(data, 0, data.length);
    }
            bis.close();
            bos.close();
    		return args;
    	}
     
    	public void onCreate(Bundle icicle)
    	{
           super.onCreate(icicle);
           TextView textView = new TextView(this);
     
    		String info_url = "";
    		try {
    			info_url = infoURL("http://www.mondomain.com/");
    		} catch (IOException e) {
    			info_url = "IOException";
    		}
    	    textView.setText(info_url);
    	    setContentView(textView);
        }
     
    }
    ---------------------------------

    J'ai fais mes devoirs et testé sur divers version d'émulateur de 1.6 a 3.1.
    testé divers code exemple fournie dans divers forum.
    J'ai toujours l'erreur suivant qui m'affiche dans l'émulateur d'android lorsque j'exécute le .apk : IOException

    Dans Eclipe tout s'emble beau, dans l'émulateur je peux me connecter sur le web via l'application intégré.

    Merci pour vos suggestions.

    -Ian

  2. #2
    Membre chevronné
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Par défaut
    et à part l'IOException, qu'est qui te dit?

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 9
    Par défaut Mon stacktrace
    Merci pour votre aide

    -Ian

    -----
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    java.net.UnknownHostException: Unable to resolve host "www.google.com": Mo Adress associated whith hostname
     at java.net.InetAdress.lookupHostByName(InetAdress.java.496)
     at java.net.InetAdress.getAllByName(InetAdress:java 277)
     at java.net.InetAdress.getAllByname(InetAdress:java 249)
     at org.apache.harmony.luni.internal.net.wwww.protocol.httpConnection.<init>(HttpConnection.java:69)
     at org.apache.harmony.luni.internal.net.wwww.protocol.httpConnection.<init>(HttpConnection.java:48)
     at org.apache.harmony.luni.internal.net.wwww.protocol.httConnection$Adress.connect(HttpConnection.java:304)
     at org.apache.harmony.luni.internal.net.wwww.protocol.httConnectionPool.get(HttpConnectionPool.java:89)
     at org.apache.harmony.luni.internal.net.wwww.protocol,httpConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
     at org.apache.harmony.luni.internal.net.wwww.protocol,httpConnectionImpl.makeConnection(httpURLConnectionImpl.java:274)
     at org.apache.harmony.luni.internal.net.wwww.protocol,httpConnectionImpl.tretieveresponse(HttpURLConnectionImpl.java:1038)
     at org.apache.harmony.luni.internal.net.wwww.protocol,httpConnectionImpl.getInputStream(HttpURLConnectionImpl.java:522)
     at java.net.URL.openStream(URL.java:645)
     at com.android.snmp.Snmp.onCreate(Snmp.java:56)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
     at android.app.ActivityThread.handledLaunActivuty(ActivityThread.java:1764)
     at android.app.ActivityThread.access$1500(activityThread.java:122)
     at android.app.ActivityThread$H.handleMassege(ActivityThread.java:1002)
     at andeoid.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:132)
     at android.app.ActivityThread.main(ActivityThread.java:4025)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invokeNative(Metho.java:491)
     at com.android.Internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
     at com.android.Internal.os.ZygoteInit.main(ZygoteInit.java:599)
     at dalvik.system.NativeStart.main(Native Method)
    -----

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,


    1/ As tu bien mis la permission INTERNET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android.permission.INTERNET
    2/ Arrives tu à te connecter via le browser par défault
    Si non alors tu as un problème sur ta connexion ( proxy , ...)

    3/ Essaye de recréer un emulateur, dés fois cela arrange le problème

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 9
    Par défaut Resolu
    Merci pour l'info,
    c'était effectivement d'ajouté:

    <uses-permission android:name="android.permission.INTERNET" />

    juste avant /manifest dans: AndroidManifest.xml

    J'en ai profité pour changer mon code, afficher tout le contenu de la page url. sans passé par un ficher. je vous fais par de mon code.

    -Ian


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.io.StringWriter;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    import java.net.*;
     
    public class Snmp extends Activity
    {
    	public static String stack2string(Exception e) {
    		  try {
    		    StringWriter sw = new StringWriter();
    		    PrintWriter pw = new PrintWriter(sw);
    		    e.printStackTrace(pw);
    		    return "------\r\n" + sw.toString() + "------\r\n";
    		  }
    		  catch(Exception e2) {
    		    return "bad stack2string";
    		  }
    		 }
     
    	private String infoURL(String url) throws IOException {
            URL tmpURL = new URL(url);
            URLConnection yc = tmpURL.openConnection();
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    yc.getInputStream()));
            String inputLine = "no data";
            String inputTMP = "";
           while ((inputTMP = in.readLine()) != null) {
        	   inputLine = inputLine + inputTMP;
           }
                 System.out.println(inputLine);
            in.close();
    		return inputLine;
    	}
     
    	public void onCreate(Bundle icicle)
    	{
           super.onCreate(icicle);
           TextView textView = new TextView(this);
     
    		String info_url = "";
    		try {
    			info_url = infoURL("http://www.monurl.com/");
    		} catch (IOException ioe) {
    			ioe.printStackTrace();
    			info_url = stack2string(ioe);
    		}
    	    textView.setText(info_url);
    	    setContentView(textView);
        }
     
    }

  6. #6
    Membre averti
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Par défaut
    Si d'autres on le problème il faut comme dit mettre la permission en dernier juste avant </manifest>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    </application>
        <uses-permission android:name="android.permission.INTERNET" />
    </manifest>
    Dans mon cas j'avais mis avant </application> et ça ne passait pas.

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Il suffit déditer le manifest avec eclipse... le plugin se charge de le mettre au bon endroit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour lire le contenu d'une url
    Par eric41 dans le forum Langage
    Réponses: 3
    Dernier message: 25/12/2012, 23h30
  2. lire le contenu d'une URL
    Par turin75 dans le forum Haskell
    Réponses: 3
    Dernier message: 19/04/2008, 19h34
  3. Comment lire le contenu d'une cellule
    Par lthibert dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2007, 17h21
  4. Comment récupérer le contenu d'une URL dans une variable ?
    Par Fildz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2006, 09h26
  5. [Débutant]Comment lire le contenu d'une Listview ?
    Par PierreBord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/02/2006, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo