Salut,
J'ai une bdd web qui contient une table images , contenant elle-même 3 colonnes (id,lien et note). A côté de ceci j'ai un script php récuperant la ligne de la dernière image ajoutée à la bdd pour ensuite l'encoder en JSON :
Ce code fonctionne puisqu'il retourne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php mysql_connect("host","username","mdp"); //remplacé par les vraies valeurs mysql_select_db("appsplea_f"); $q = mysql_query("SELECT * FROM images;"); $c = mysql_num_rows($q); $q = mysql_query("SELECT * FROM images WHERE id ='".$c."';"); while($row=mysql_fetch_assoc($q)){ $output[]=$row; } echo(json_encode($output)); mysql_close(); ?>
Mon but est maintenant de récupérer ces données JSON depuis mon application android pour ensuite recuperer les valeurs du champ "lien" et "note".[{"id":"3","lien":"\/home\/appsplea\/3.jpg","note":"0"}]
J'ai suivi plusieurs tutoriels mais sans réussite. Le dernier en date étant celui-ci : http://preprod-orange-tunisie.makina...n-dans-android
Dans la méthode onCreate() de mon activité j'ai ceci :
Et la classe JsonParser contient :
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 String url = "ici j'ai mit l'url de mon script php"; JsonParser jParser = new JsonParser (); String json = jParser.getJSONFromUrl(url); try { JSONArray t = new JSONArray(json); String test=""; for(int i = 0; i < t.length(); i++){ JSONObject t2 = t.getJSONObject(i); test += t2.getString(TAG_ID); } bandeau.setText(test); } catch (JSONException e){ e.printStackTrace(); }
Seulement voilà mon application plante dés qu'elle arrive sur l'activité en question. Avec les erreurs suivants dans 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 public class JsonParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // Constructeur de notre classe public JsonParser() { } public String getJSONFromUrl(String url) { try { // faire appel à defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); 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 { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } return jObj.toString(); } }
En sachant que j'ai bien déclarer la ligne "<uses-permission android:name="android.permission.INTERNET"/>" dans le manifest de l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 02-16 18:05:44.845: E/AndroidRuntime(16498): at java.net.InetAddress.getAllByName(InetAddress.java:220) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 02-16 18:05:44.845: E/AndroidRuntime(16498): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 02-16 18:05:44.845: E/AndroidRuntime(16498): at com.apps.galerie.JsonParser.getJSONFromUrl(JsonParser.java:33) 02-16 18:05:44.845: E/AndroidRuntime(16498): at com.apps.galerie.MainActivity.onCreate(MainActivity.java:57) 02-16 18:05:44.845: E/AndroidRuntime(16498): at android.app.Activity.performCreate(Activity.java:4533) 02-16 18:05:44.845: E/AndroidRuntime(16498): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053) 02-16 18:05:44.845: E/AndroidRuntime(16498): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
Voilà j'ai vraiment beaucoup de mal. Je tourne en rond et j'ai vraiment besoin d'aide. Aidez-moi s'il vous plait.
Partager