Bonjour,
J'essaye actuellement de connecter mon application avec une base de données située sur un serveur distant. Je me suis pas mal renseigné et apparemment, il faut utiliser JSON.
J'ai trouvé un bon tutoriel mais j'ai un peu de mal à comprendre certaines lignes de code, ce qui fait que je ne comprends pas tout à fait pourquoi cela ne fonctionne pas quand j'essaye d'adapter ce code à mon projet.
Tout d'abord, je crée un fichier PHP que je mets dans un dossier de mon site web :Ensuite dans mon main Activity je place ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php include('connection.php'); $sql=mysql_query("SELECT * FROM membres WHERE nom like '".$_REQUEST['membres']."%'"); while($row=mysql_fetch_assoc($sql)) $output[]=$row; print(json_encode($output)); mysql_close(); ?>Je fais ça mais ça ne fonctionne pas et je ne sais pas exactement d'où vient le problème.
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 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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://www.monsite.fr/export.php"; private String getServerData(String returnString) { InputStream is = null; String result = ""; ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("membres","M")); // Envoi 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()); } // Conversion de la requête en string 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(); 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 ID_ville et Nom_ville dans le LogCat Log.i("log_tag","id: " + json_data.getInt("id") + ", nom: " + json_data.getString("nom")); // 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; }
Est-ce que je tape mal l'adresse du fichier ?
Est-ce que quelqu'un sait ce qu'est exactement NameValuePair ?
Merci d'avance pour votre aide.
Partager