Oui, vous pouvez le faire.
Matériel dont vous avez besoin :
- Serveur Web
- Une base de données stockée sur le serveur Web
- Et un peu de connaissances sur Android :)
- Webservices (json ,Xml...etc) avec ce que vous êtes à l'aise
1. Définissez d'abord les autorisations Internet dans votre fichier manifeste
<uses-permission android:name="android.permission.INTERNET" />
2. Créez une classe pour créer une HTTPRequest à partir du serveur (j'utilise json parisng pour obtenir les valeurs)
par exemple :
public class JSONfunctions {
public static JSONObject getJSONfromURL(String url) {
InputStream is = null;
String result = "";
JSONObject jArray = null;
// Download JSON data from URL
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
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());
}
// Convert response to 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());
}
try {
jArray = new JSONObject(result);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return jArray;
}
}
3. Dans votre MainActivity
Faire un objet de la classe JsonFunctions
et passez l'url comme argument d'où vous voulez obtenir les données
ex :
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4. Et enfin, lisez les jsontags et stockez les valeurs dans une liste de tableaux et affichez-les plus tard dans la liste si vous le souhaitez
et si vous avez un problème, vous pouvez suivre ce blog, il donne d'excellents tutoriels Android AndroidHive
Étant donné que la réponse ci-dessus que j'ai écrite remonte à longtemps et maintenant HttpClient
, HttpPost
,HttpEntity
ont été supprimés dans l'API 23. Vous pouvez utiliser le code ci-dessous dans le build.gradle (au niveau de l'application) pour continuer à utiliser org.apache.http
dans votre projet.
android {
useLibrary 'org.apache.http.legacy'
signingConfigs {}
buildTypes {}
}
ou Vous pouvez utiliser HttpURLConnection
comme ci-dessous pour obtenir votre réponse du serveur
public String getJSON(String url, int timeout) {
HttpURLConnection c = null;
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.connect();
int status = c.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
return sb.toString();
}
} catch (MalformedURLException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}
ou Vous pouvez utiliser une bibliothèque tierce comme Volley
, Retrofit
pour appeler l'API du service Web et obtenir la réponse, puis l'analyser en utilisant FasterXML-jackson
, google-gson
.