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()); } }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 ----------------------------- 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()); } }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
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"); } } }
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}
Partager