Partage
  • Partager sur Facebook
  • Partager sur Twitter

Connecter une application mobile avec un serveur

Connecter une application mobile avec un serveur distant avec android

Sujet résolu
4 juin 2019 à 15:14:15

Bonjour à tous !

C'est la première fois que je poste sur le forum, je suis nocive en ce qui concerne le développement web.

Pour un projet je dois créer une application android à l'aide de l'environnement Android Studio. Maintenant que l'application est presque fini au niveau technique, nous devons la connecter avec un serveur NAS distant ( conenction avec Workbench Mysql). j'ai lu qu'il fallait utiliser le driver JDBC mais j'ai pleins de problèmes : j'ai beau chercher sur internet aucune réponses, le driver n'est pas reconnu. 

J'ai bien mis le .jar que j'ai téléchargé ici dans le dossier lib de mon application, j'ai bien fait la dependencie et malgré ça, le driver n'est pas reconnu. J'ai également fait tous les imports qu'il fallait, j'ai même regarder ce qu'il fallait mettre dans le manifest, j'ai tout mis à jour, j'ai essayé pleins de réponses que j'ai trouvé sur internet mais lorsque je lance la simulation l'application se ferme et j'ai ce pb là :

 code

2019-06-04 15:08:12.716 5154-5154/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 5154
    java.lang.BootstrapMethodError: Exception from call site #39 bootstrap method
        at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.<clinit>(AbandonedConnectionCleanupThread.java:58)
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:453)
        at java.lang.Class.forName(Class.java:378)
        at com.mysql.cj.jdbc.NonRegisteringDriver.<clinit>(NonRegisteringDriver.java:99)
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:453)
        at java.lang.Class.forName(Class.java:378)
        at com.example.myapplication.MainActivity.onCreate(MainActivity.java:16)
        at android.app.Activity.performCreate(Activity.java:7009)
        at android.app.Activity.performCreate(Activity.java:7000)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.NoClassDefFoundError: Invalid descriptor: SOURCE_CLASS_POINTER.
        at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.<clinit>(AbandonedConnectionCleanupThread.java:58) 
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:453) 
        at java.lang.Class.forName(Class.java:378) 
        at com.mysql.cj.jdbc.NonRegisteringDriver.<clinit>(NonRegisteringDriver.java:99) 
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:453) 
        at java.lang.Class.forName(Class.java:378) 
        at com.example.myapplication.MainActivity.onCreate(MainActivity.java:16) 
        at android.app.Activity.performCreate(Activity.java:7009) 
        at android.app.Activity.performCreate(Activity.java:7000) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 




Ci-dessous mon code en entier (activity_main.xml est un simple "hello world !" d'exemple pour une empty activity):

mon MainActivity.java

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            // Class.forName("com.mysql.jdbc.driver").newInstance();
            //Class.forName("com.mysql.jdbc.driver")
            Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
            Log.d("Debugging","Ok");
        } catch (Exception ex) {
            Log.d("Debugging","not Ok");
        }
    }
}


Merci d'avance, j'attend vos réponses avec impatience car je n'arrive plus à avancer.

Si vous avez d'autre technique également pour vous connecter à un serveur distant, faites moi en part !



-
Edité par Newbegginer 4 juin 2019 à 15:22:06

  • Partager sur Facebook
  • Partager sur Twitter
5 juin 2019 à 9:58:57

Salut,

Bien que théoriquement ça doit être possible d'utiliser JDBC sur Android ce n'est pas recommandé. Il convient plutôt de développer une couche entre le mobile et la base de données. C'est ce qu'on appelle un web-service ou API.

  • Partager sur Facebook
  • Partager sur Twitter
5 juin 2019 à 10:20:19

Bonjour !

Merci pour votre réponse, pouvez-vous me donner un peu plus de détails ? Pour savoir ce que je dois rechercher exactement.
 C'est un code à intégrer ?

Merci beaucoup !
  • Partager sur Facebook
  • Partager sur Twitter
5 juin 2019 à 11:51:12

Salut,

C'est une application serveur à créer. Elle expose des path (par exemple /user/123453)  et fait des requêtes SQL en fonction en renvoyant un résultat au format JSON 
L'application client (donc l'app Android) a plus qu'à faire une requête GET sur myapi.com/user/123453 pour récupérer les infos de cet user au format JSON.

Tu peux faire ça avec n'importe quel langage

  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2019 à 11:18:29

Bonjour ! 

Merci beaucoup pour votre aide, du coup j'utilise le wampserveur et je code les services web en php. Et je vais utiliser FileZilla pour me connecter à mon serveur distant :)

Merci encore d'avoir pris le temps de me répondre !
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2021 à 15:25:25

Bonjour la famille ! voudrais développer une solution pour une structure public afin de faciliter à ma communauté l'obtention de certains justificatifs, alors mon problème s'oppose sur le type d'architecture ainsi la technologie adéquat, car la solution doit être accessible à tous donc une connexion à distance sans forfait internet
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2021 à 16:10:22

@CodeMonster Bonjour, merci de ne pas déterrer d'ancien sujet résolu, créer le votre.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter