Ja, dat kan.
Materialen die je nodig hebt:
- Webserver
- Een database opgeslagen op de webserver
- En een beetje Android-kennis :)
- Webservices (json ,Xml...etc) waar u zich prettig bij voelt
1. Stel eerst de internetrechten in uw manifestbestand in
<uses-permission android:name="android.permission.INTERNET" />
2. Maak een klasse om een HTTPRequest van de server te maken (ik gebruik json parisng om de waarden te krijgen)
voor bijv.:
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. In uw MainActivity
Maak een object van de klasse JsonFunctions
en geef de url door als argument waar u de gegevens vandaan wilt halen
bijv.:
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4. En lees dan tenslotte de jsontags en sla de waarden op in een arraylist en toon het later in listview als je wilt
en als je een probleem hebt, kun je deze blog volgen, hij geeft uitstekende Android-tutorials AndroidHive
Aangezien het bovenstaande antwoord dat ik schreef lang geleden was en nu HttpClient
, HttpPost
,HttpEntity
zijn verwijderd in API 23. U kunt de onderstaande code gebruiken in de build.gradle(app-level) om nog steeds org.apache.http
te blijven gebruiken in uw project.
android {
useLibrary 'org.apache.http.legacy'
signingConfigs {}
buildTypes {}
}
of U kunt HttpURLConnection
. gebruiken zoals hieronder om uw reactie van de server te krijgen
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;
}
of U kunt een bibliotheek van derden gebruiken, zoals Volley
, Retrofit
om de webservice-API aan te roepen en het antwoord te krijgen en het later te ontleden met behulp van FasterXML-jackson
, google-gson
.