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 :

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();
?>
Ce code fonctionne puisqu'il retourne :

[{"id":"3","lien":"\/home\/appsplea\/3.jpg","note":"0"}]
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".

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 :

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(); 
        }
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
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();
	}
}
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
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)
En sachant que j'ai bien déclarer la ligne "<uses-permission android:name="android.permission.INTERNET"/>" dans le manifest de l'application.

Voilà j'ai vraiment beaucoup de mal. Je tourne en rond et j'ai vraiment besoin d'aide. Aidez-moi s'il vous plait.