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

API standards et tierces Android Discussion :

Accéder à une base de données d'un serveur OpenERP en utilisant un client Android


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut Accéder à une base de données d'un serveur OpenERP en utilisant un client Android
    Bonjour, je bosse sur une application client serveur entre android et un serveur OpenERP, je peux établir la connexion avec une base de donnée, maintenant j'essai de lire, écrire, créer des partenaires.. dans de la base de donnée, ces codes sont en 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
    ------------------------
    Java Code for Create Method
    ------------------------
     
    package com.xmlrpc.client;
     
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Vector;
     
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
     
    public class Create {
     
    public static void main(String args[]) throws Exception {
     
    Vector params1 = new Vector();
    params1.addElement("openerpdb");
    params1.addElement("admin");
    params1.addElement("admin");
     
    XmlRpcClient xmlrpcLogin = new XmlRpcClient();
    XmlRpcClientConfigImpl xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
    xmlrpcConfigLogin.setEnabledForExtensions(true);
    xmlrpcConfigLogin.setServerURL(new URL("http", "localhost", 8069, "/xmlrpc/common"));
    xmlrpcLogin.setConfig(xmlrpcConfigLogin);
     
    Object id = xmlrpcLogin.execute("login", params1);
    System.out.println("Login Id : " + id.toString());
     
    System.out.println("------------------------");
     
    XmlRpcClient client = new XmlRpcClient();
    XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
    clientConfig.setEnabledForExtensions(true);
    clientConfig.setServerURL(new URL("http", "localhost", 8069, "/xmlrpc/object"));
    client.setConfig(clientConfig);
     
    HashMap<Object, Object> params = new HashMap<Object, Object>();
     
    params.put("street", "Stendhal");
    params.put("partner_id", "24");
    params.put("city", "Punalur3");
    params.put("name", "ShameerHabeeb3");
     
    Vector<Object> arg = new Vector<Object>();
     
    arg.add("openerpdb");
    arg.add(1);
    arg.add("admin");
    arg.add("res.partner.address");
    arg.add("create");
    arg.add(params);
     
    Object ret_id = client.execute("execute", arg);
    System.out.println("Created new partner address with id :" + ret_id.toString());
     
    }
    }
    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
    --------------------------
    Java Code for Read mthod
    --------------------------
     
    package com.xmlrpc.client;
     
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Vector;
     
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
     
    public class Read {
     
    public static void main(String args[]) throws Exception {
    XmlRpcClient client = new XmlRpcClient();
    XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
    clientConfig.setEnabledForExtensions(true);
    clientConfig.setServerURL(new URL("http", "192.168.1.153", 8069, "/xmlrpc/object"));
    client.setConfig(clientConfig);
     
    Object[] params2 = { "city", "name", "partner_id", "country_id", "email", "create_date",
    "write_date" };
     
    Vector<Object> arg = new Vector<Object>();
     
    arg.add("openerpdb");
    arg.add(1);
    arg.add("admin");
    arg.add("res.partner.address");
    arg.add("read");
    arg.add(3);
    arg.add(params2);
     
    HashMap ids = (HashMap) client.execute("execute", arg);
     
    Object[] partner = (Object[]) ids.get("partner_id");
    Object[] country = (Object[]) ids.get("country_id");
     
    System.out.println(ids.get("id"));
    System.out.println(ids.get("name"));
    System.out.println(ids.get("city"));
    System.out.println(ids.get("email"));
    System.out.println(ids.get("create_date"));
    System.out.println(ids.get("write_date"));
    System.out.println("partner : " + partner[0].toString() + " , " + partner[1].toString());
    System.out.println("country : " + country[0].toString() + " , " + country[1].toString());
    }
    }
    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
    -----------------------------
    Java Code for write method
    -----------------------------
     
     
    package com.xmlrpc.client;
     
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Vector;
     
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
     
    public class Write {
    public static void main(String args[]) throws Exception {
     
    Vector params1 = new Vector();
    params1.addElement("openerpdb");
    params1.addElement("admin");
    params1.addElement("admin");
     
    XmlRpcClient xmlrpcLogin = new XmlRpcClient();
    XmlRpcClientConfigImpl xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
    xmlrpcConfigLogin.setEnabledForExtensions(true);
    xmlrpcConfigLogin.setServerURL(new URL("http", "localhost", 8069, "/xmlrpc/common"));
    xmlrpcLogin.setConfig(xmlrpcConfigLogin);
     
    Object id = xmlrpcLogin.execute("login", params1);
    System.out.println("Login Id : " + id.toString());
     
    System.out.println("------------------------");
     
    XmlRpcClient client = new XmlRpcClient();
    XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
    clientConfig.setEnabledForExtensions(true);
    clientConfig.setServerURL(new URL("http", "localhost", 8069, "/xmlrpc/object"));
    client.setConfig(clientConfig);
     
    HashMap<Object, Object> params = new HashMap<Object, Object>();
     
    params.put("street", "Edamon34");
     
    Vector<Object> arg = new Vector<Object>();
    Object ids[] = { 25, 24, 23 };
    arg.add("openerpdb");
    arg.add(1);
    arg.add("admin");
    arg.add("res.partner.address");
    arg.add("write");
    arg.add(ids);
    arg.add(params);
     
    Object ret_id = client.execute("execute", arg);
    System.out.println("result :" + ret_id.toString());
    }
    }
    pour android j'ai essayé le code suivant (l'application ne démarre pas):
    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
     
    	public Button login_button;
    	public TextView host_tv,user_tv, pass_tv;
    	public EditText host_txt,user_txt, pass_txt;
     
    	public XMLRPCClient rpcClient, regClient;
    	public static final String HOST = "http://192.168.2.8:8069/xmlpc";
    	public static final String URL_COMMON = "/common";
    	public static final String URL_OBJECT = "/object";
    	public static final String URL_DB = "/db";
     
    	public String DB_NAME = "";
    	public String USERNAME = "";
    	public String PASSWORD = "";
    	public String res = "";
    	public int uid = 0;
     
    	public String partner = "";
    	public int partner_id = 0;
    	public Spinner db_spinner;
    	public ArrayAdapter spinnerArrayAdapter;
     
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		// TEXTVIEW		
    		user_tv = (TextView) findViewById(R.id.user_tv);
    		pass_tv = (TextView) findViewById(R.id.pass_tv);
    		// EDITTEXT
    		user_txt = (EditText) findViewById(R.id.user_txt);
    		pass_txt = (EditText) findViewById(R.id.pass_txt);
     
    		// BUTTOn
    		login_button = (Button) findViewById(R.id.login_button);
    		login_button.setOnClickListener(LoginButtonClick);
     
     
    		db_spinner = (Spinner) findViewById(R.id.db_spinner);
    		spinnerArrayAdapter = new ArrayAdapter(this ,android.R.layout.simple_spinner_item);
    		spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
    		getDatabaseList();
     
    		db_spinner.setAdapter(spinnerArrayAdapter);
    	}
     
    	public void showToastNotification(String  message) {
    		Toast tmptoast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
    		tmptoast.show();
     
    	}
     
    	private OnClickListener LoginButtonClick = new OnClickListener() {
    		@Override
    		public void onClick(View v) {
    			try {
    				uid = Create();
    				if (uid > 0) {
    					String succes ="successful login from "+ USERNAME+" using database "+DB_NAME;
    					showToastNotification(succes);
    				} else {
    					String fail = "bad login or password from "+ USERNAME+" using database " +DB_NAME;
    					showToastNotification(fail);
    				}
    			} catch (Exception e) {
    				Log.i("------------------ LOGIN FAILED 1", e.toString());
    			}
    		}
    	};
    	public int Create()// String host, int port, String tinydb, String login,
    						// String password)
    	{
    		USERNAME = user_txt.getText().toString();
    		PASSWORD = pass_txt.getText().toString();
    		DB_NAME = db_spinner.getSelectedItem().toString();
    		rpcClient = new XMLRPCClient(HOST+URL_OBJECT );
     
    				// Create
    			  HashMap<String, Object> vals = new HashMap<String, Object>();
    			    vals.put("name", "un nom du partenaire");
    			    vals.put("ref", "une reference");
    			    Object[] params = new Object[]{DB_NAME, 1,PASSWORD, "res.partner", "create", vals};
     
    				//Object res = null;
    				try {
    					res =(String) rpcClient.call("execute", params);
    					Log.i("------------------CURRENT USER ID  ",  res);
     
    					Object uid1 = Integer.parseInt(res);
    					if (uid1 instanceof Integer)
    						return (Integer) uid1;
    					return -1;
    	} catch (XMLRPCException e) {
    		Log.i("------------------ LOGIN FAILED-XMLRPCException", e.toString());
    		return -2;
    	} catch (Exception e) {
    		Log.i("------------------ LOGIN FAILED-EXCEPTION", e.toString());
    		return -3;
    	}}
     
     
    	public void  getDatabaseList() {
    		 rpcClient = new XMLRPCClient(HOST+URL_DB);
    			Vector<Object> params = new Vector<Object>();
    			Object result = null;
    			try {
    				 result= rpcClient.call("list", params);
    			} catch (XMLRPCException e) {
    				e.printStackTrace();
    			}
    			Object[] a = (Object[]) result;
    			for (int i = 0; i < a.length; i++) {
    			    if (a[i] instanceof String){
    			    	spinnerArrayAdapter.add(a[i].toString());
    			    	}
    				}
    		Log.i("------------------ getDatabaseList","4");
    		if (a.length == 0) {
    			showToastNotification("No database exist");
    		}
    	 }
    }
    voici le logcat:

    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
    02-28 11:54:11.600: ERROR/AndroidRuntime(628): FATAL EXCEPTION: main
    02-28 11:54:11.600: ERROR/AndroidRuntime(628): java.lang.RuntimeException: Unable to start activity ComponentInfo{mn.usi.openerpdroid/mn.usi.openerpdroid.OpenERPDroid}: java.lang.NullPointerException
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.os.Handler.dispatchMessage(Handler.java:99)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.os.Looper.loop(Looper.java:123)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at java.lang.reflect.Method.invoke(Method.java:521)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at dalvik.system.NativeStart.main(Native Method)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628): Caused by: java.lang.NullPointerException
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at mn.usi.openerpdroid.OpenERPDroid.getDatabaseList(OpenERPDroid.java:136)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at mn.usi.openerpdroid.OpenERPDroid.onCreate(OpenERPDroid.java:66)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    02-28 11:54:11.600: ERROR/AndroidRuntime(628):     ... 11 more
    02-28 11:54:11.610: WARN/ActivityManager(58):   Force finishing activity mn.usi.openerpdroid/.OpenERPDroid
    02-28 11:54:12.174: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{450b3408 mn.usi.openerpdroid/.OpenERPDroid}
    02-28 11:54:22.822: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{450b3408 mn.usi.openerpdroid/.OpenERPDroid}

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah tu as une variable nulle à la ligne 136 de ta classe OpenERPDroid, dans la méthode getDatabaseList....

  3. #3
    Membre averti
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut
    si tu parle de la variable result, je pense que je suis obligé de l'initialiser :

  4. #4
    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
    On parle de l'UTILISATION (NullPointerException) d'une variable nulle....

    Faut voir ce qui est à la ligne 136....

    Le call à rpcClient ? (a noter qu'il y a un jolie try/catch autour sans gestion de l'erreur avec un ugly e.printStackTrace.... Log.e("MonAppli","Y a une erreur",e); est quand même mieux !

    spinnerArrayAdapter ?

    a[i] ?

  5. #5
    Membre averti
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut
    Ceci est un code qui marche et qui permet la connexion à une base de donnée avec presque la même forme que le précédent
    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
    public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		// TEXTVIEW		
    		user_tv = (TextView) findViewById(R.id.user_tv);
    		pass_tv = (TextView) findViewById(R.id.pass_tv);
    		// EDITTEXT
    		user_txt = (EditText) findViewById(R.id.user_txt);
    		pass_txt = (EditText) findViewById(R.id.pass_txt);
     
    		// BUTTOn
    		login_button = (Button) findViewById(R.id.login_button);
    		login_button.setOnClickListener(LoginButtonClick);
     
     
    		db_spinner = (Spinner) findViewById(R.id.db_spinner);
    		spinnerArrayAdapter = new ArrayAdapter(this ,android.R.layout.simple_spinner_item);
    		spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
    		getDatabaseList();
    		db_spinner.setAdapter(spinnerArrayAdapter);
    	}
     
    	public void showToastNotification(String  message) {
    		Toast tmptoast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
    		tmptoast.show();
    	}
    	private OnClickListener LoginButtonClick = new OnClickListener() {
    		@Override
    		public void onClick(View v) {
    			try {
    				uid = Connect();
    				if (uid > 0) {
    					String succes ="successful login from "+ USERNAME+" using database "+DB_NAME;
    					showToastNotification(succes);
    				} else {
    					String fail = "bad login or password from "+ USERNAME+" using database " +DB_NAME;
    					showToastNotification(fail);
    				}
    			} catch (Exception e) {
    				Log.i("------------------ LOGIN FAILED 1", e.toString());
    			}
    		}
    	};
    	public int Connect()
    	{
    		USERNAME = user_txt.getText().toString();
    		PASSWORD = pass_txt.getText().toString();
    		DB_NAME = db_spinner.getSelectedItem().toString();
    		rpcClient = new XMLRPCClient(HOST+URL_COMMON );
    		try {
     
    				user = (String) rpcClient.call("login", DB_NAME, USERNAME, PASSWORD).toString();
    				Log.i("------------------CURRENT USER ID  ", user);
    				Object uid1 = Integer.parseInt(user);
    				if (uid1 instanceof Integer)
    					return (Integer) uid1;
    			return -1;
    		} catch (XMLRPCException e) {
    			Log.i("------------------ LOGIN FAILED-XMLRPCException", e.toString());
    			return -2;
    		} catch (Exception e) {
    			Log.i("------------------ LOGIN FAILED-EXCEPTION", e.toString());
    			return -3;
    		}
    	}
    	public void  getDatabaseList() {
    		 rpcClient = new XMLRPCClient(HOST+URL_DB);
    			Vector<Object> params = new Vector<Object>();
    			Object result = null;
    			try {
    				 result= rpcClient.call("list", params);
    			} catch (XMLRPCException e) {
    				e.printStackTrace();
    			}
    			Object[] a = (Object[]) result;
    			for (int i = 0; i < a.length; i++) {
    			    if (a[i] instanceof String){
    			    	spinnerArrayAdapter.add(a[i].toString());
    			    	}
    				}
    		Log.i("------------------ getDatabaseList","4");
    		if (a.length == 0) {
    			showToastNotification("No database exist");
    		}
    	 }
    spinnerArrayAdapter et a[] c'est pour récupérer une liste des bases de données qui permet de cocher une base pour la connexion

  6. #6
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Par défaut client android pour openerp
    salut;
    j'ai tester ce code mais il m'affiche une exception donnee
    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
    02-27 11:14:04.323: E/AndroidRuntime(1055): FATAL EXCEPTION: main
    02-27 11:14:04.323: E/AndroidRuntime(1055): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.client_android/com.example.client_android.MainActivity}: java.lang.NullPointerException
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.ActivityThread.access$600(ActivityThread.java:141)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.os.Looper.loop(Looper.java:137)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at dalvik.system.NativeStart.main(Native Method)
    02-27 11:14:04.323: E/AndroidRuntime(1055): Caused by: java.lang.NullPointerException
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at com.example.client_android.MainActivity.getDatabaseList(MainActivity.java:122)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at com.example.client_android.MainActivity.onCreate(MainActivity.java:65)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.Activity.performCreate(Activity.java:5104)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    02-27 11:14:04.323: E/AndroidRuntime(1055): 	... 11 more
    s'il ya quelqu'un qui peut m'aider ?
    voila la classe MainActivity :
    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    package com.example.client_android;
     
    import java.util.Vector;
     
    import org.xmlrpc.android.XMLRPCClient;
    import org.xmlrpc.android.XMLRPCException;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
     
     
    public class MainActivity extends Activity {
     
    	public Button login_button;
    	public TextView host_tv,user_tv, pass_tv;
    	public EditText host_txt,user_txt, pass_txt;
     
    	public XMLRPCClient rpcClient, regClient;
    	public static final String HOST = "http://10.0.2.2:8069";
    	public static final String URL_COMMON = "/common";
    	public static final String URL_OBJECT = "/object";
    	public static final String URL_DB = "/db";
     
    	public String DB_NAME = "";
    	public String USERNAME = "";
    	public String PASSWORD = "";
    	public String user = "";
    	public int uid = 0;
     
    	public String partner = "";
    	public int partner_id = 0;
    	public Spinner db_spinner;
    	public ArrayAdapter<String> spinnerArrayAdapter;
     
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
    		// TEXTVIEW		
    		user_tv = (TextView) findViewById(R.id.user_tv);
    		pass_tv = (TextView) findViewById(R.id.pass_tv);
    		// EDITTEXT
    		user_txt = (EditText) findViewById(R.id.user_txt);
    		pass_txt = (EditText) findViewById(R.id.pass_txt);
     
    		// BUTTOn
    		login_button = (Button) findViewById(R.id.login_button);
    		login_button.setOnClickListener(LoginButtonClick);
     
     
    		db_spinner = (Spinner) findViewById(R.id.db_spinner);
    		spinnerArrayAdapter = new ArrayAdapter(this ,android.R.layout.simple_spinner_item);
    		spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
    		getDatabaseList();
    		db_spinner.setAdapter(spinnerArrayAdapter);
    	}
     
    	public void showToastNotification(String  message) {
    		Toast tmptoast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
    		tmptoast.show();
    	}
    	private OnClickListener LoginButtonClick = new OnClickListener() {
    		@Override
    		public void onClick(View v) {
    			try {
    				uid = Connect();
    				if (uid > 0) {
    					String succes ="successful login from "+ USERNAME+" using database "+DB_NAME;
    					showToastNotification(succes);
    				} else {
    					String fail = "bad login or password from "+ USERNAME+" using database " +DB_NAME;
    					showToastNotification(fail);
    				}
    			} catch (Exception e) {
    				Log.i("------------------ LOGIN FAILED 1", e.toString());
    			}
    		}
    	};
    	public int Connect()
    	{
    		USERNAME = user_txt.getText().toString();
    		PASSWORD = pass_txt.getText().toString();
    		DB_NAME = db_spinner.getSelectedItem().toString();
    		rpcClient = new XMLRPCClient(HOST+URL_COMMON );
    		try {
     
    				user = (String) rpcClient.call("login", DB_NAME, USERNAME, PASSWORD).toString();
    				Log.i("------------------CURRENT USER ID  ", user);
    				Object uid1 = Integer.parseInt(user);
    				if (uid1 instanceof Integer)
    					return (Integer) uid1;
    			return -1;
    		} catch (XMLRPCException e) {
    			Log.i("------------------ LOGIN FAILED-XMLRPCException", e.toString());
    			return -2;
    		} catch (Exception e) {
    			Log.i("------------------ LOGIN FAILED-EXCEPTION", e.toString());
    			return -3;
    		}
    	}
    	public void  getDatabaseList() {
    		 rpcClient = new XMLRPCClient(HOST+URL_DB);
    			Vector<Object> params = new Vector<Object>();
    			Object result = null;
    			try {
    				 result= rpcClient.call("list", params);
    			} catch (XMLRPCException e) {
    				e.printStackTrace();
    			}
    			Object[] a = (Object[]) result;
    			for (int i = 0; i < a.length; i++) {
    			    if (a[i] instanceof String){
    			    	spinnerArrayAdapter.add(a[i].toString());
    			    	}
    				}
    		Log.i("------------------ getDatabaseList","4");
    		if (a.length == 0) {
    			showToastNotification("No database exist");
    		}
    	 }
    voila le fichier xml (la vue) :
    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
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
     <TextView
            android:id="@+id/user_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="22dp"
            android:text="user_tv" />
     
        <Button
            android:id="@+id/login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/db_spinner"
            android:layout_centerHorizontal="true"
            android:text="connecter" />
     
        <Spinner
            android:id="@+id/db_spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="60dp" />
     
        <TextView
            android:id="@+id/pass_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/user_tv"
            android:layout_below="@+id/user_tv"
            android:layout_marginTop="60dp"
            android:text="pass_tv" />
     
        <EditText
            android:id="@+id/pass_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/pass_tv"
            android:layout_alignRight="@+id/db_spinner"
            android:ems="10" />
     
        <EditText
            android:id="@+id/user_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/user_tv"
            android:layout_alignLeft="@+id/pass_txt"
            android:ems="10" >
     
            <requestFocus />
        </EditText>
     
    </RelativeLayout>
    merci d'avance

Discussions similaires

  1. Accéder à une base de données Paradox dispo sur serveur FTP?
    Par QAYS dans le forum Bases de données
    Réponses: 10
    Dernier message: 14/08/2009, 15h09
  2. [MySQL] Accéder à une base de données d'une autre site (sur un autre serveur)
    Par FCDB dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/06/2006, 16h59
  3. Accéder à une base de données distante
    Par rouche dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 31/05/2006, 08h46
  4. [MySQL] Accéder à une base de données distante en local
    Par kint dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/01/2006, 13h40

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