Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] connexion à une base de donnée mongoDB

problème socket exception

Sujet résolu
    15 février 2019 à 18:46:26

    Bonjour, 

    Je développe actuellement une application sur Android studio et j'ai un petit soucis lié à la connexion de ma base de donnée voici le code (je mets uniquement le code concerné):

     public boolean onTouch(View v, MotionEvent event) {
    
            switch(v.getId()){
                case R.id.button:
                    try {
                        prod = new Produit("3017760826174");
                    }catch(IOException | JSONException e){
                        e.printStackTrace();
                        System.out.println("problème sur Produit");
    
                    }
    
    //la suite ou ce qui précède ce code n'as pas d'influence sur le bug, tout part d'ici quand on instancie un Produit avec comme paramètre un id 

    la suite donc dans la class Produit :

     public Produit(String p_id) throws JSONException, IOException{
    
            _id=p_id;
    
            ConnectMongo mongo = new ConnectMongo();
            Recherche article = new Recherche();
            System.out.println("instance connect Mongo() ok");
            MongoDatabase database = mongo.connectServer();
            System.out.println("mongo.connect serv ok");
            doc = article.articleRechercheById(_id, database);
    
    
            System.out.println("doc de la méthode Produit vaut : "+doc);
            mongo.closedServer();
            System.out.println("fermeture mongoClient ok : "+doc);

    la class connectMongo

    package com.example.easylife;
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientURI;
    import com.mongodb.client.MongoDatabase;
    
    public class ConnectMongo {
    
        protected String _id;
        protected String uriString;
        protected MongoClientURI uri;
        protected MongoClient mongoClient;
        protected MongoDatabase mongoDB;
    
        public ConnectMongo(){
            _id=null;
            uriString=null;
            uri=null;
            mongoClient=null;
        }
    
        public  MongoDatabase connectServer(){
    
                    System.out.println("point d'entré de la méthode connectServer() ");
                    uriString = "mongodb://82.xx.xx.xx:270xx";
                    uri = new MongoClientURI(uriString);
                    System.out.println("uri défini dans ConnectMongo");
                    mongoClient = new MongoClient(uri);
                    System.out.println("instance de mongoClient avec uri ok");
                    while(mongoDB==null)
                    mongoDB = mongoClient.getDatabase("off");
    
                    System.out.println("là on est ok mongoDB alpha vaut :"+mongoDB);
    
                    System.out.println("là on est ok mongoDB vaut :"+mongoDB);
    
    
            return mongoDB;
        }
    
        public void closedServer(){
            mongoClient.close();
        }
    }


    la class Recherche :

     public Document articleRechercheById(String code , MongoDatabase mongoDB){
            System.out.println("début recherche");
            System.out.println("point d'entré de la méthode articleRechercheById");
            FindIterable<Document> findIterable = mongoDB.getCollection("products").find(eq("_id", code));
            System.out.println("finditerable vaut "+findIterable);
           try {
               doc = findIterable.iterator().next();
           }catch(MongoException e){
               e.printStackTrace();
           }
            System.out.println("doc de la methode article RechercheById vaut "+doc +" taille du fichier :  "+ doc.size());
            System.out.println("fin recherche");
    
            return doc;
        }


    ce que j'ai en sorti dans le run :

    02/15 18:11:49: Launching app
    $ adb shell am start -n "com.example.easylife/com.example.easylife.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
    Client not ready yet..Waiting for process to come online
    Connected to process 22103 on device emulator-5554
    Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
    W/xample.easylif: JIT profile information will not be recorded: profile file does not exits.
    I/chatty: uid=10085(com.example.easylife) identical 10 lines
    W/xample.easylif: JIT profile information will not be recorded: profile file does not exits.
    I/InstantRun: starting instant run server: is main process
    W/xample.easylif: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
    W/xample.easylif: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
    D/OpenGLRenderer: HWUI GL Pipeline
    D/: HostConnection::get() New Host Connection established 0xddaeb700, tid 22122
    I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
        android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
    I/OpenGLRenderer: Initialized EGL, version 1.4
    D/OpenGLRenderer: Swap behavior 1
    W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
    D/OpenGLRenderer: Swap behavior 0
    D/EGL_emulation: eglCreateContext: 0xe51e5860: maj 2 min 0 rcv 2
    D/EGL_emulation: eglMakeCurrent: 0xe51e5860: ver 2 0 (tinfo 0xe5131aa0)
    D/EGL_emulation: eglMakeCurrent: 0xe51e5860: ver 2 0 (tinfo 0xe5131aa0)
    I/System.out: instance connect Mongo() ok
        point d'entré de la méthode connectServer() 
    I/System.out: uri défini dans ConnectMongo
    D/NetworkSecurityConfig: No Network Security Config specified, using platform default
    I/cluster: Cluster created with settings {hosts=[82.64.93.72:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
    I/System.out: instance de mongoClient avec uri ok
    I/System.out: là on est ok mongoDB alpha vaut :com.mongodb.client.internal.MongoDatabaseImpl@de3ac7e
        là on est ok mongoDB vaut :com.mongodb.client.internal.MongoDatabaseImpl@de3ac7e
        mongo.connect serv ok
        début recherche
        point d'entré de la méthode articleRechercheById
    I/System.out: finditerable vaut com.mongodb.client.internal.Java8FindIterableImpl@ff305df
    I/cluster: Cluster description not yet available. Waiting for 30000 ms before timing out
    I/connection: Opened connection [connectionId{localValue:1, serverValue:197}] to 82.64.93.72:27017
    I/cluster: Monitor thread successfully connected to server with description ServerDescription{address=82.64.93.72:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 5]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=7215340}
    I/connection: Closed connection [connectionId{localValue:2}] to 82.64.93.72:27017 because there was a socket exception raised by this connection.
    W/System.err: com.mongodb.MongoException: android.os.NetworkOnMainThreadException
            at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:136)
            at com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:50)
            at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:390)
            at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:106)
            at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:92)
            at com.mongodb.internal.connection.DefaultServer.getConnection(DefaultServer.java:85)
            at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.getConnection(ClusterBinding.java:115)
            at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:460)
            at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:406)
            at com.mongodb.operation.FindOperation.execute(FindOperation.java:696)
            at com.mongodb.operation.FindOperation.execute(FindOperation.java:83)
            at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:179)
            at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:132)
            at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:86)
            at com.example.easylife.Recherche.articleRechercheById(Recherche.java:31)
            at com.example.easylife.Produit.<init>(Produit.java:264)
            at com.example.easylife.MainActivity.onTouch(MainActivity.java:57)
            at android.view.View.dispatchTouchEvent(View.java:12509)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
    W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
            at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
            at android.app.Activity.dispatchTouchEvent(Activity.java:3400)
            at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
            at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
            at android.view.View.dispatchPointerEvent(View.java:12752)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7092)
            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7061)
            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7022)
            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7195)
            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
            at android.os.MessageQueue.nativePollOnce(Native Method)
    W/System.err:     at android.os.MessageQueue.next(MessageQueue.java:326)
            at android.os.Looper.loop(Looper.java:160)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
        Caused by: android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
            at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:389)
            at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
            at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
            at java.net.Socket.connect(Socket.java:621)
            at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64)
            at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79)
            at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65)
            at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:126)
        	... 60 more
    I/System.out: doc de la methode article RechercheById vaut Document{{}} taille du fichier :  0
        fin recherche
        doc de la méthode Produit vaut : Document{{}}
    I/System.out: fermeture mongoClient ok : Document{{}}
    E/InputEventReceiver: Exception dispatching input event.
    E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
    E/MessageQueue-JNI: android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
            at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:117)
            at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:105)
            at java.net.InetAddress.getAllByName(InetAddress.java:1154)
            at com.android.okhttp.Dns$1.lookup(Dns.java:39)
            at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:175)
            at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:141)
            at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:83)
            at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:174)
            at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
            at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
            at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
            at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
            at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
            at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
            at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:244)
            at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
            at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26)
            at java.net.URL.openStream(URL.java:1072)
            at org.apache.commons.io.IOUtils.toString(IOUtils.java:1198)
            at com.example.easylife.Produit.<init>(Produit.java:271)
            at com.example.easylife.MainActivity.onTouch(MainActivity.java:57)
            at android.view.View.dispatchTouchEvent(View.java:12509)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
            at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
            at android.app.Activity.dispatchTouchEvent(Activity.java:3400)
            at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
            at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
            at android.view.View.dispatchPointerEvent(View.java:12752)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
        	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:44
    D/AndroidRuntime: Shutting down VM
    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.easylife, PID: 22103
        android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
            at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:117)
            at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:105)
            at java.net.InetAddress.getAllByName(InetAddress.java:1154)
            at com.android.okhttp.Dns$1.lookup(Dns.java:39)
            at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:175)
            at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:141)
            at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:83)
            at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:174)
            at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
            at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
            at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
            at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
            at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
            at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
            at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:244)
            at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
            at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26)
            at java.net.URL.openStream(URL.java:1072)
            at org.apache.commons.io.IOUtils.toString(IOUtils.java:1198)
            at com.example.easylife.Produit.<init>(Produit.java:271)
            at com.example.easylife.MainActivity.onTouch(MainActivity.java:57)
            at android.view.View.dispatchTouchEvent(View.java:12509)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662)
            at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
            at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
            at android.app.Activity.dispatchTouchEvent(Activity.java:3400)
            at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
            at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
            at android.view.View.dispatchPointerEvent(View.java:12752)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642)
    E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7092)
            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7061)
            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7022)
            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7195)
            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
            at android.os.MessageQueue.nativePollOnce(Native Method)
            at android.os.MessageQueue.next(MessageQueue.java:326)
            at android.os.Looper.loop(Looper.java:160)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    I/Process: Sending signal. PID: 22103 SIG: 9
    Application terminated.
    

    donc le problème je sais qu'il est lié a Android et sa gestion des connexions car sur eclipse le code fonctionne très bien

    ps : le fichier AndroidManifest pour les permissions:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.easylife">
    
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <application
    
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    
    </manifest>

    je ne vois vraiment pas a quoi est lié cet erreur.

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2019 à 14:09:47

      Salut,

      Il y a deux problèmes : 

      Le premier, le moins grave, c'est que tu fais ta requête sur le thread principal donc ça crash. (ligne 39, 172, 174, c'est écrit un peu partout).

      Le deuxième, beaucoup plus grave : NE FAIS PAS CA. N'attaque jamais ta base de données directement depuis une application client. Tu es en train d'exposer ta base de données à tout le monde. Tu caches l'ip dans ton message, c'est que tu te rend bien compte que tu ne veux pas qu'on y accède. Qu'est ce qui va nous empêcher d'y accéder lorsque tu auras publié ton app ? Utilise une API pour accéder à ta base de données.

      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2019 à 17:23:23

        Salut Geda, Merci pour ta réponse, 

        Oui j'ai remarqué qu'il y avait un problème sur les connexions apparemment sur android il ne faut pas utiliser le thread principal..

        Concernant la deuxième remarque je ne comprend pas trop, le code que j'ai mit avec mon ip et sans mdp c'est pour dev chez moi, la base de donnée que j'utilise est open source de base mais de toute façon mon code lui le sera pas.. 

        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2019 à 18:00:45

          Disons qu’une requête réseau un peu longue bloque completement l’UI. C’est pas terrible. 

          Pour la deuxième remarque, on peut toujours decompiler ton apk et récupérer tout ce qu’il faut pour se connecter à ta base. On peut aussi analyser le réseau et regarder les appels que tu fais, a voir si ça part en clair ou non...

          • Partager sur Facebook
          • Partager sur Twitter

          [Android] connexion à une base de donnée mongoDB

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown