- Forum-Beiträge: 17
10.04.2014, 19:35:40 via Website
10.04.2014 19:35:40 via Website
Nun, ich muss für die Ausbildung eine Datenauswertungsapp programmieren, dabei möchte ich zwischen Androidgerät und meinem Webserver eine Verbindung herstellen, danach die einzelnen strings und doubles am Bildschirm ausgeben. Doch nachdem ich es heute nach 6h noch nicht geschafft habe, frage ich jetzt euch.
Auf meinem Webserver ist bereits ein PHP-Programm, welches eine bestimme Tabelle meiner MySQL-Datenbank als JSON-Array ausgibt, und zwar unter folgender Webadresse
Zudem habe ich bereits nach dem bekannten Tutorial dafür bei der AndroidManifest.xml die Internet permission hinzugefügt.
Das Problem ist eben nun die Main. Denn wie ich mittlerweile gelesen habe und selbst gemerkt, funktioniert jener Code vom obig genannten Tutorial seit Honeycomb nicht mehr. Leider habe ich nach 6 stündiger Suche und Herumprobiererei immer noch keinen funktionereden Datenbankzugriff.
Habe dann gelesen, es gehe irgendwie mit AsynchronTask geht, habe aber keinen Plan was ich dann wo machen muss.
Würde mich freuen wenn mir jemand helfen könnte, bzw. den Code so verändern dass er funktionert!
mfg,
Daniel
2
3import java.io.BufferedReader;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6import java.util.ArrayList;
7import org.apache.http.HttpEntity;
8import org.apache.http.HttpResponse;
9import org.apache.http.NameValuePair;
10import org.apache.http.client.HttpClient;
11import org.apache.http.client.entity.UrlEncodedFormEntity;
12import org.apache.http.client.methods.HttpPost;
13import org.apache.http.impl.client.DefaultHttpClient;
14import org.json.JSONArray;
15import org.json.JSONException;
16import org.json.JSONObject;
17import android.os.Bundle;
18import android.app.ListActivity;
19import android.util.Log;
20import android.view.Menu;
21import android.widget.ArrayAdapter;
22
23public class MainActivity extends ListActivity {
24
25 InputStream is;
26 ArrayList<String> results =new ArrayList<String>();
27 JSONObject json_data;
28
29
30
31 @Override
32 protected void onCreate(Bundle savedInstanceState) {
33 super.onCreate(savedInstanceState);
34 getData();
35 }
36
37 private void getData() {
38 String result = "";
39 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
40
41
42 try{
43 HttpClient httpclient = new DefaultHttpClient();
44 HttpPost httppost = new HttpPost("//Website PHP file");
45 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
46 HttpResponse response = httpclient.execute(httppost);
47 HttpEntity entity = response.getEntity();
48 is = entity.getContent();
49 }catch(Exception e){
50 Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString());}
51
52
53
54
55 try{
56 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
57 StringBuilder sb = new StringBuilder();
58 String line = null;
59 while ((line = reader.readLine()) != null) {
60 sb.append(line + "n");
61 }
62 is.close();
63 result=sb.toString();
64 }catch(Exception e){
65 Log.e("log_tag", "Error converting result "+e.toString());
66 }
67
68
69
70 try{
71 JSONArray jArray = new JSONArray(result);
72 for(int i=0;i<jArray.length();i++){
73 json_data = jArray.getJSONObject(i);
74 results.add((String) json_data.get("Einheit") + " "+ json_data.get("Wert"));
75 }
76 fillList();
77 }
78 catch(JSONException e){
79 Log.e("log_tag", "Error parsing data "+e.toString());
80 }
81 }
82
83
84
85
86 public void fillList() {
87 // TODO Auto-generated method stub
88 this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
89 }
90
91
92
93
94
95 @Override
96 public boolean onCreateOptionsMenu(Menu menu) {
97 // Inflate the menu; this adds items to the action bar if it is present.
98 getMenuInflater().inflate(R.menu.main, menu);
99 return true;
100 }
101
102}
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.