Bonjour,
Je développe une application qui récupère des données via JSON.
J'ai réussi à afficher ces données dans une application toute simple qui ne gère que ça. Mais intégrer à ma "principale" application, j'obtiens l'erreur suivante :
J'ai trouvé sur internet qu'il faut créer un thread ou une asynctask pour ne pas utiliser le "main thread" de l'application ou quelque chose dans cet esprit la...Error in http connexion android.os.NetworkOnMainThreadException
Malgré tous les exemples que j'ai pu étudier, je n'arrive pas à savoir par où commencer.
Voici mon code :
Un petit coup de pouce ne serait pas de refus ^^
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 public class ListeProduits extends Activity { TextView txt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.liste_produits); LinearLayout rootLayout = new LinearLayout(getApplicationContext()); txt = new TextView(getApplicationContext()); rootLayout.addView(txt); setContentView(rootLayout); // Définir le texte et appeler la fonction de connexion. txt.setText("Connexion..."); // Appeler la méthode pour récupérer les données JSON txt.setText(getServerData(strURL)); } // Mettre l'adresse du script PHP // Attention localhost ou 127.0.0.1 ne fonctionnent pas. Mettre l'adresse IP local. public static final String strURL = "http://xxxx.free.fr/xxx.php"; private String getServerData(String returnString) { InputStream is = null; String result = ""; // Envoyer la requête au script PHP. // Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'"); // $_REQUEST['ville'] sera remplacé par L dans notre exemple. // Ce qui veut dire que la requête enverra les villes commençant par la lettre L ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("Nom", "L")); // Envoie de la commande http try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(strURL); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection " + e.toString()); } // Convertion de la requête en string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); //"iso-8859-1" StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result " + e.toString()); } // Parse les données JSON try{ JSONArray jArray = new JSONArray(result); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); // Affichage Produit et Prix dans le LogCat Log.i("log_tag","Produit: "+json_data.getString("Produit")+ ", Prix: "+json_data.getInt("Prix") ); // Résultats de la requête returnString += "\n\t" + jArray.getJSONObject(i); } }catch(JSONException e){ Log.e("log_tag", "Error parsing data " + e.toString()); } return returnString; } }
Merci de l'attention que vous accorderez à mon problème
GJuubz
Partager