Daniel T.
- Forum-Beiträge: 3
13.02.2012, 20:07:28 via Website
13.02.2012 20:07:28 via Website
Hallo,
ich arbeite zur Zeit an einem kleinen Projekt (App für Cocktailrezepte) und komme nicht weiter... Ich habe einen Webserver mit einer MySQL Datenbank und ein PHP-Skript mit welcher ich eine bestimmte Tabelle auslese und in JSON konvertiere. Funktioniert soweit, ich kann mittels Android auf diese PHP-Datei zugreifen und das JSON-File lesen, an was es jedoch leider scheitert ist dass ich es richtig ausgeben kann, in meinem Fall in eine listView. Weiß nicht ob das die beste Möglichkeit ist, bitte um Anregungen...
kurze Beschreibung der Funktionsweise der App:
- Inhalt der Tabelle "cocktails": Feld "name", Feld "image, Feld "description"
- am Startscreen werden in einer listView die Cocktails angezeigt, also alle Einträge im Feld "name" der Tabelle "cocktails"
- bei Klick auf einen Cocktail wird durch eine neue Activity die jeweilige Beschreibung angezeigt, also die Felder "image" und "description"
EDIT: sorry, Fehlermeldung ganz vergessen...
hier der Code:
hier der Link zum ganzen Eclipse-Project: Link
lg
Daniel
ich arbeite zur Zeit an einem kleinen Projekt (App für Cocktailrezepte) und komme nicht weiter... Ich habe einen Webserver mit einer MySQL Datenbank und ein PHP-Skript mit welcher ich eine bestimmte Tabelle auslese und in JSON konvertiere. Funktioniert soweit, ich kann mittels Android auf diese PHP-Datei zugreifen und das JSON-File lesen, an was es jedoch leider scheitert ist dass ich es richtig ausgeben kann, in meinem Fall in eine listView. Weiß nicht ob das die beste Möglichkeit ist, bitte um Anregungen...
kurze Beschreibung der Funktionsweise der App:
- Inhalt der Tabelle "cocktails": Feld "name", Feld "image, Feld "description"
- am Startscreen werden in einer listView die Cocktails angezeigt, also alle Einträge im Feld "name" der Tabelle "cocktails"
- bei Klick auf einen Cocktail wird durch eine neue Activity die jeweilige Beschreibung angezeigt, also die Felder "image" und "description"
EDIT: sorry, Fehlermeldung ganz vergessen...
102-13 20:12:20.902: E/log_tag(8536): Fehler bei der HTTP-Verbindung android.os.NetworkOnMainThreadException
202-13 20:12:20.902: E/log_tag(8536): Error converting result java.lang.NullPointerException
302-13 20:12:20.914: E/log_tag(8536): Error parsing data org.json.JSONException: End of input at character 0 of
202-13 20:12:20.902: E/log_tag(8536): Error converting result java.lang.NullPointerException
302-13 20:12:20.914: E/log_tag(8536): Error parsing data org.json.JSONException: End of input at character 0 of
hier der Code:
1package at.dtr.firstapp;
2
3import java.io.BufferedReader;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6import java.util.ArrayList;
7
8import org.apache.http.HttpEntity;
9import org.apache.http.HttpResponse;
10import org.apache.http.NameValuePair;
11import org.apache.http.client.HttpClient;
12import org.apache.http.client.entity.UrlEncodedFormEntity;
13import org.apache.http.client.methods.HttpPost;
14import org.apache.http.impl.client.DefaultHttpClient;
15import org.json.JSONArray;
16import org.json.JSONException;
17import org.json.JSONObject;
18
19import android.app.Activity;
20import android.app.ListActivity;
21import android.os.Bundle;
22import android.util.Log;
23import android.widget.ArrayAdapter;
24
25public class FirstAppActivity extends ListActivity {
26 /** Called when the activity is first created. */
27 InputStream is;
28 ArrayList<String> results = new ArrayList<String>();
29 JSONObject json_data;
30
31 @Override
32 public void onCreate(Bundle savedInstanceState) {
33 super.onCreate(savedInstanceState);
34 //setContentView(R.layout.main);
35
36 // beim Start der Activity wird gleich getData() aufgerufen
37 getData();
38 }
39
40
41 public void getData() {
42
43 // IP angeben
44 String IP = "192.168.1.108";
45 // PHP-File angeben
46 String PhpFile = "getdata.php";
47
48
49 String result = "";
50 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
51
52 // Verbindung zur PHP-Datei wird hergestellt
53 try {
54 HttpClient httpclient = new DefaultHttpClient();
55 HttpPost httppost = new HttpPost("http://" + IP + "/" + PhpFile);
56 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
57 HttpResponse response = httpclient.execute(httppost);
58 HttpEntity entity = response.getEntity();
59 is = entity.getContent();
60 } catch (Exception e) {
61 Log.e("log_tag", "Fehler bei der HTTP-Verbindung " + e.toString());
62 }
63
64 // die Tabellendaten, die von der PHP-Datei ausgelesen wurden, werden in den String 'result' gespeichert
65 try {
66 BufferedReader reader = new BufferedReader(new InputStreamReader(
67 is, "iso-8859-1"), 8);
68 StringBuilder sb = new StringBuilder();
69 String line = null;
70 while ((line = reader.readLine()) != null) {
71 sb.append(line + "n");
72 }
73 is.close();
74 result = sb.toString();
75 } catch (Exception e) {
76 Log.e("log_tag", "Error converting result " + e.toString());
77 }
78
79 // String 'result' wird in ein JSON-Array konvertiert
80 try {
81 JSONArray jArray = new JSONArray(result);
82 for (int i = 0; i < jArray.length(); i++) {
83 json_data = jArray.getJSONObject(i);
84 results.add((String) json_data.get("name") + " "
85 + json_data.get("image") + " " + json_data.get("description"));
86 }
87 fillList();
88 } catch (JSONException e) {
89 Log.e("log_tag", "Error parsing data " + e.toString());
90 }
91
92 }
93
94 // String 'result' wird in die listView geschrieben
95 public void fillList() {
96 this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
97 }
98
99
100
101
102}
2
3import java.io.BufferedReader;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6import java.util.ArrayList;
7
8import org.apache.http.HttpEntity;
9import org.apache.http.HttpResponse;
10import org.apache.http.NameValuePair;
11import org.apache.http.client.HttpClient;
12import org.apache.http.client.entity.UrlEncodedFormEntity;
13import org.apache.http.client.methods.HttpPost;
14import org.apache.http.impl.client.DefaultHttpClient;
15import org.json.JSONArray;
16import org.json.JSONException;
17import org.json.JSONObject;
18
19import android.app.Activity;
20import android.app.ListActivity;
21import android.os.Bundle;
22import android.util.Log;
23import android.widget.ArrayAdapter;
24
25public class FirstAppActivity extends ListActivity {
26 /** Called when the activity is first created. */
27 InputStream is;
28 ArrayList<String> results = new ArrayList<String>();
29 JSONObject json_data;
30
31 @Override
32 public void onCreate(Bundle savedInstanceState) {
33 super.onCreate(savedInstanceState);
34 //setContentView(R.layout.main);
35
36 // beim Start der Activity wird gleich getData() aufgerufen
37 getData();
38 }
39
40
41 public void getData() {
42
43 // IP angeben
44 String IP = "192.168.1.108";
45 // PHP-File angeben
46 String PhpFile = "getdata.php";
47
48
49 String result = "";
50 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
51
52 // Verbindung zur PHP-Datei wird hergestellt
53 try {
54 HttpClient httpclient = new DefaultHttpClient();
55 HttpPost httppost = new HttpPost("http://" + IP + "/" + PhpFile);
56 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
57 HttpResponse response = httpclient.execute(httppost);
58 HttpEntity entity = response.getEntity();
59 is = entity.getContent();
60 } catch (Exception e) {
61 Log.e("log_tag", "Fehler bei der HTTP-Verbindung " + e.toString());
62 }
63
64 // die Tabellendaten, die von der PHP-Datei ausgelesen wurden, werden in den String 'result' gespeichert
65 try {
66 BufferedReader reader = new BufferedReader(new InputStreamReader(
67 is, "iso-8859-1"), 8);
68 StringBuilder sb = new StringBuilder();
69 String line = null;
70 while ((line = reader.readLine()) != null) {
71 sb.append(line + "n");
72 }
73 is.close();
74 result = sb.toString();
75 } catch (Exception e) {
76 Log.e("log_tag", "Error converting result " + e.toString());
77 }
78
79 // String 'result' wird in ein JSON-Array konvertiert
80 try {
81 JSONArray jArray = new JSONArray(result);
82 for (int i = 0; i < jArray.length(); i++) {
83 json_data = jArray.getJSONObject(i);
84 results.add((String) json_data.get("name") + " "
85 + json_data.get("image") + " " + json_data.get("description"));
86 }
87 fillList();
88 } catch (JSONException e) {
89 Log.e("log_tag", "Error parsing data " + e.toString());
90 }
91
92 }
93
94 // String 'result' wird in die listView geschrieben
95 public void fillList() {
96 this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
97 }
98
99
100
101
102}
hier der Link zum ganzen Eclipse-Project: Link
lg
Daniel
— geändert am 13.02.2012, 20:13:07
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.