Bonsoir,
Je suis entrain de développer un petit exemple sur l'ajout d'une nouvelle ligne employé dans la base de données pour cela j'ai fait ceci :
et ma classe est :Code:
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 package com.gestionemploye.ahmed.gestionemploye; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; /** * Created by Ahmed on 04/12/2014. */ public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if (method == "POST") { // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } else if (method == "GET") { // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } public static JSONObject getjObj() { return jObj; } public static void setjObj(JSONObject jObj) { JSONParser.jObj = jObj; } }
et j'ai activé la permission android.permission.INTERNETCode:
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 package com.gestionemploye.ahmed.gestionemploye; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View.OnClickListener; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * Created by Ahmed on 04/12/2014. */ public class AddNewEmploye extends Activity implements OnClickListener{ // Progress Dialog private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); private EditText txtnewidiom; private EditText txtmeaning; private Button btnsavenew; private int success; //to determine JSON signal insert success/fail // url to insert new idiom (change accordingly) private static String url_insert_new = "http://192.168.1.7/androidexemple/insertnew.php"; // JSON Node names private static final String TAG_SUCCESS = "success"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ajoutemploye); // Edit Text txtnewidiom = (EditText) findViewById(R.id.textnewidiom); txtmeaning = (EditText) findViewById(R.id.txtmeaning); // Save button btnsavenew = (Button) findViewById(R.id.btnsavenew); // button click event btnsavenew.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId()==R.id.btnsavenew){ //call the InsertNewIdiom thread new InsertNewIdiom().execute(); if (success==1){ Toast.makeText(getApplicationContext(), "New idiom saved...", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(getApplicationContext(), "New idiom FAILED to saved...", Toast.LENGTH_LONG).show(); } } } /** * Background Async Task to Create new Idioms * */ class InsertNewIdiom extends AsyncTask<String, String, String> { //capture values from EditText String entry = txtnewidiom.getText().toString(); String meaning = txtmeaning.getText().toString(); /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(AddNewEmploye.this); pDialog.setMessage("Saving the new IDIOM ("+entry+")..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } /** * Inserting the new idiom * */ protected String doInBackground(String... args) { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("entry", entry)); params.add(new BasicNameValuePair("meaning", meaning)); // getting JSON Object // Note that create product url accepts GET method JSONObject json = jsonParser.makeHttpRequest(url_insert_new, "GET", params); // check log cat from response Log.d("Insert New Idiom Response", json.toString()); // check for success tag try { success = json.getInt(TAG_SUCCESS); if (success == 1) { // successfully save new idiom } else { // failed to add new idiom } } catch (JSONException e) { e.printStackTrace(); } //return null; return null; } /** * After completing background task Dismiss the progress dialog * **/ protected void onPostExecute(String file_url) { // dismiss the dialog once done pDialog.dismiss(); } } }
En exécutant le code j'obtiens l 'erreur suivante :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 691-705/com.gestionemploye.ahmed.gestionemploye E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:278) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) Caused by: java.lang.NullPointerException at com.gestionemploye.ahmed.gestionemploye.AddNewEmploye$InsertNewIdiom.doInBackground(AddNewEmploye.java:105) at com.gestionemploye.ahmed.gestionemploye.AddNewEmploye$InsertNewIdiom.doInBackground(AddNewEmploye.java:77) at android.os.AsyncTask$2.call(AsyncTask.java:264) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
la ligne 105 dans l'erreur pointe sur cette ligne
et la ligne 77 :Code:JSONObject json = jsonParser.makeHttpRequest(url_insert_new, "GET", params);
Merci pour votre aide !Code:class InsertNewIdiom extends AsyncTask<String, String, String> {