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 :

Communiquer avec une base distante en HTTP avec servlet Java


Sujet :

Android

  1. #1
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut Communiquer avec une base distante en HTTP avec servlet Java
    Bonjour quelqu'un a t-il une idée comment relier Android a une base distance utilisant des servlet comme interface ( protocole http).

    Je trouve des difficultés car Android ne reconnais pas localhost.

    Voici le code de la methode qui doit relier avec le serveur:

    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
    public  String envoyer()
        {
        	URLConnection url;
     
            HttpClient client = new DefaultHttpClient();
            String aurl= "http://localhost:4848/WebTracking/AndroidS";
            HttpGet get= new HttpGet(aurl);
            HttpPost post=new HttpPost(aurl);
            OutputStream os = null;
            InputStream in = null;
            HttpResponse reponse;
            String result=null;
            try {
            	 Log.i("infor", "==========================A=====================");
    			InetAddress id= InetAddress.getLocalHost();
     
    			 Log.i("infor", "========================After InetAddress==================="+id);
    		} catch (UnknownHostException e1) {
    			 Log.i("infor", "==========================A====================="+e1.toString());
    			e1.printStackTrace();
    		}
            try
            {
           Log.i("infor", "==========================A=====================");
            reponse= client.execute(post);
     
            Log.i("infor", "==========================B=====================");
            HttpEntity entite=reponse.getEntity();
            Log.i("infor", "==========================C=====================");
            if( entite!=null)
            {
            	Log.i("infor", "==========================D=====================");
            	in=entite.getContent();
            	Log.i("infor", "==========================E=====================");
            	result= convert(in);
            	Log.i("infor", "==========================F=====================");
            	tv.setText(result);
            	Log.i("infor", "==========================G=====================");
     
     
            }
            }
            catch(Exception e)
            {
            	Log.i("infor", "=============ccc=============1====================="+e.toString());
            }
     
     
             String response = null;

  2. #2
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Le problème qu’on rencontre souvent sur ce type d’application, c’est au moment du test avec l’émulateur. Si votre serveur d’applications est installé sur le même ordinateur que celui de l’émulateur, votre application ne le trouvera pas. Ceci s’explique par le fait que l’adresse de la boucle locale 127.0.0.1 ou localhost correspond à celle de l’émulateur et non celle de votre ordinateur.

    Pour régler ce problème Google mis en place une autre adresse, qui pointe sur la boucle locale de votre pc : 10.0.2.2

    D'ou la solution : Il sufffit de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String aurl= "http://localhost:4848/WebTracking/AndroidS";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String aurl= "http://10.0.2.2:4848/WebTracking/AndroidS";

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Pouvez vous m'éclaircir d'avantage ?
    Bonjour,

    Je voulais savoir si vous pouvez me donnez les étapes à suivre pour utiliser les servlet pour établir une connexion à une base de donnée distante.
    En fait je veux mettre ma base de donnée sur ma machine virtuelle pour le test.

    Merci pour votre aide.
    Bien cordialement,

  4. #4
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    C'est Android ou se connecter simplement à une base de donnée avec les servlets??

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par jahbromo Voir le message
    C'est Android ou se connecter simplement à une base de donnée avec les servlets??
    Hy jahbromo

    je crois qu'elle veut se connecter à la base de donnée distante à partir d'Android à travers les servlets.

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Citation Envoyé par saturne2008 Voir le message
    Hy jahbromo

    je crois qu'elle veut se connecter à la base de donnée distante à partir d'Android à travers les servlets.
    Alors toi tu peux lui aider à ton tour n'est ce pas avec le client android.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par jahbromo Voir le message
    Alors toi tu peux lui aider à ton tour n'est ce pas avec le client android.
    Bonsoir Jahbromo & charoufa

    moi j'ai travaillé avec le PHP coté serveur, mais je pense que c'est la même chose coté client Android comme le disait Jahbromo

    ok voila la classe Main.java

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    package com.saturne.externalDB;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
     
    public class Main extends Activity implements OnClickListener {
     
     
    	//  private static final String CLASSTAG = SimpleGet.class.getSimpleName();
     
    	    private EditText getInput;
    	    private TextView getOutput;
    	    private Button getButton;
     
    	    @Override
    	    public void onCreate(Bundle icicle) {
    	        super.onCreate(icicle);
    	        setContentView(R.layout.main);
     
    	        this.getInput = (EditText) findViewById(R.id.get_input);
    	        this.getOutput = (TextView) findViewById(R.id.get_output);
    	        this.getButton = (Button) findViewById(R.id.get_button);
     
    	        this.getButton.setOnClickListener(new OnClickListener() {
     
    	            public void onClick(View v) {
    	                getOutput.setText("");
    	                String output = getHttpResponse(getInput.getText().toString());
    	                if (output != null) {
    	                    getOutput.setText(output);
    	                }
    	            }
    	        });
    	    };
     
    	    /**
                 * Perform an HTTP GET with HttpUrlConnection.
                 * 
                 * @param location
                 * @return
                 */
    	    private String getHttpResponse(String location) {
    	        String result = null;
    	        URL url = null;
    	        // Log.d(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " location = " + location);
     
    	        try {
    	            url = new URL(location);
    	            //   Log.d(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " url = " + url);
    	        } catch (MalformedURLException e) {
    	        	//  Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " " + e.getMessage());
    	        }
     
    	        if (url != null) {
    	            try {
    	                HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
    	                BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    	                String inputLine;
     
    	                int lineCount = 0; // limit the lines for the example
    	                while ((lineCount < 10) && ((inputLine = in.readLine()) != null)) {
    	                    lineCount++;
    	                    //  Log.v(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " inputLine = " + inputLine);
    	                    result += "\n" + inputLine;
    	                }
     
    	                in.close();
    	                urlConn.disconnect();
     
    	            } catch (IOException e) {
    	               // Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " " + e.getMessage());
    	            }
    	        } else {
    	        	//  Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " url NULL");
    	        }
    	        return result;
    	    }
     
    		public void onClick(View arg0) {
    			// TODO Auto-generated method stub
     
    		}
    	}
    la partie Main.xml

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
     
     
    <EditText
    	android:id="@+id/get_input" 
    	android:layout_height="wrap_content" 
    	android:layout_width="fill_parent">
    	</EditText>    
     
    <Button 
    	android:id="@+id/get_button" 
    	android:layout_height="wrap_content" 
    	android:layout_width="fill_parent" 
    	android:text="External DB">
    	</Button>
     
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:text="TextView" android:id="@+id/get_output"/>
     
    </LinearLayout>
    et noubli pas d'ajouter la permission Internet dans le Manifest

    Bonne chance

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Thanks
    Je vais essayer cette solution.
    Merci et bonne Journée

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    salut remplacer localhost par 10.0.2.2 et ça marche

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut verifier Version du SDK et executer votre application directement sur le mobile pour assurance
    J'aimerais aussi ajouter qu’après l'ajout des permission utilisateur( Internet ) vous deviez vérifier la version du SDF car ya une incompatibilité souvent mentionner dans la documentation. et si vous disposer d'un smart Phone ( android) l’idéal est de tester votre application directement sur votre mobile pour être assurer.
    et éviter le conflit d'adresse comme mentionne jahbromo.

Discussions similaires

  1. Connexion d'une base de données MySQL avec une application Android
    Par eloumghari.imane dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 06/01/2014, 09h53
  2. Réponses: 1
    Dernier message: 09/11/2012, 14h04
  3. application delphi 5 avec une base distante
    Par tijani dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/02/2010, 11h55
  4. Comment lier application avec une base distante
    Par Duke_MBA dans le forum VB.NET
    Réponses: 12
    Dernier message: 24/11/2008, 07h44
  5. Réponses: 4
    Dernier message: 23/10/2006, 09h09

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