Ja, det kan du gøre.
Materialer du skal bruge:
- Webserver
- En database gemt på webserveren
- Og en lille smule android viden :)
- Webtjenester (json ,Xml...osv), hvad end du er fortrolig med
1. Indstil først internettilladelserne i din manifestfil
<uses-permission android:name="android.permission.INTERNET" />
2. Lav en klasse for at lave en HTTPRequest fra serveren (jeg bruger json parisng til at hente værdierne)
f.eks.:
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. I din MainActivity
Lav et objekt af klassen JsonFunctions
og send url'en som et argument, hvorfra du vil hente dataene
f.eks.:
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4. Og læs endelig jsontags og gem værdierne i en arraylist og vis den senere i listview, hvis du vil
og hvis du har et problem, kan du følge denne blog, han giver fremragende android tutorials AndroidHive
Siden ovenstående svar, jeg skrev, var længe tilbage og nu HttpClient
, HttpPost
,HttpEntity
er blevet fjernet i Api 23. Du kan bruge nedenstående kode i build.gradle(app-level) for stadig at fortsætte med at bruge org.apache.http
i dit projekt.
android {
useLibrary 'org.apache.http.legacy'
signingConfigs {}
buildTypes {}
}
eller Du kan bruge HttpURLConnection
like nedenfor for at få dit svar fra serveren
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;
}
eller Du kan bruge 3. parts bibliotek som Volley
, Retrofit
at kalde webservice-api'et og få svaret og senere parse det med FasterXML-jackson
, google-gson
.