Bonsoir dans le cadre d'un projet d'étude .
Je cherche un moyen pour que mon appli Android , puisse accéder a ma Base de donnée symfony , obtenir les données des table et persister des données dans cette base .
J'ai Symfony 3 , voici la liste de mes BD :
Quel moyen utiliser (webservice) pour pouvoir le faire et surtout comment ? j'ai beaucoup chercher sur google , mais je ne tombe pas sur une réponse concrète au problème .
Hormis ce topic qui semble aborder un peu le même sujet même si l'auteur n'a pas partager tous les codes nécessaires : http://www.developpez.net/forums/d12...services-json/
J'ai tenter avec un script json de récupération de BD qui fonctionne sous eclipse android et les BD mysql (toutes) hormis celle de symfony
Code dans la partie android :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php $con = mysqli_connect("localhost","root","","tblville"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result= mysqli_query($con,"SELECT * FROM tblville"); while($row=mysqli_fetch_assoc($result)) $output[]=$row; print(json_encode($output)); mysqli_close($con); ?>
En recherchant , certains disent qu'il faut utiliser la méthode JsonResponse pour récupérer des données/entités dans la BD symfony
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
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 package com.example.cbmedandroid; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.example.cbmedandroid.R.string; import android.app.Activity; import android.app.ListActivity; import android.net.ParseException; import android.os.Bundle; import android.os.StrictMode; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { TextView t; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); t = (TextView) findViewById(R.id.text1); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); t.setText(getServerData(strURL)); } public static final String strURL = "http://10.0.2.2/connexion.php"; private String getServerData(String returnString) { InputStream is = null; String result =""; ArrayList<NameValuePair> nameValuePaires = new ArrayList<NameValuePair>(); nameValuePaires.add(new BasicNameValuePair("tblville","tblville")); // Envoie de la commande Http try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(strURL); httppost.setEntity(new UrlEncodedFormEntity(nameValuePaires)); 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 réponse en chaine de caractère try { BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-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()); } //recuperation des donnees json try{ JSONArray jArray = new JSONArray(result); for(int i=0;i<jArray.length();i++) { JSONObject json_data = jArray.getJSONObject(i); Log.i("log_tag","ID_ville : "+json_data.getString("ID_ville")+" , Nom_ville : "+json_data.getString("Nom_ville") ); returnString += "\n\t" + jArray.getJSONObject(i); } } catch(JSONException e){ Log.e("log_tag","Error Parsing data"+e.toString()); } return returnString; } }
Ce que j'ai fais :
Mais du coup , comment récupérer ce JsonResponse en android ? le strURL je mets quoi comme adresse ? celle du controller ou.. ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // JSON ACTION public function jsonAction() { $data = $this->getDoctrine()->getManager()->getRepository('CBMedBundle:Patients')->findAll(); return new JsonResponse($data); }
Bref merci de m'aider
Partager