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 :
Nom : bdmysql.PNG
Affichages : 1442
Taille : 15,4 Ko

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 : 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);
?>
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
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;
 
}
}
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
Ce que j'ai fais :
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);
	}
Mais du coup , comment récupérer ce JsonResponse en android ? le strURL je mets quoi comme adresse ? celle du controller ou.. ?

Bref merci de m'aider