1 pièce(s) jointe(s)
Communication ANDROID et Base de donnée SYMFONY
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 :
Pièce jointe 208420
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:
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:
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:
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