T
Tomax63
Neues Mitglied
- 2
Hallo zusammen
Ich habe ein PHP-Programm, das mir einen JSON String anzeigt:
[{"ID":"1","Text":"text 1"},{"ID":"2","Text":"text 2"},{"ID":"3","Text":"weiterer text"},{"ID":"4","Text":"noch ein Text"}]
So weit ist alles gut,
Jetzt möchte ich diesen String in der App verarbeiten, das heisst erst mal in ein Array schreiben.
Nachdem ich viel versucht und gesucht habe, sollte meiner Meinung nach folgendes funktionieren:
Wen ich die Zeile "InputStream is = ...." auskommentiere, stürzt das Programm ab. Im Android Monitor:
Verstehe ich da etwas nicht bezüglich Backgroud Prozess?
Ich möchte wie gesagt nur den String aus dem PHP-Programm in ein Array einlesen um nachher Textfelder damit zu belegen.
Wäre toll, wenn mir jemand helfen könnte.
Danke,
Thomas
Ich habe ein PHP-Programm, das mir einen JSON String anzeigt:
[{"ID":"1","Text":"text 1"},{"ID":"2","Text":"text 2"},{"ID":"3","Text":"weiterer text"},{"ID":"4","Text":"noch ein Text"}]
So weit ist alles gut,
Jetzt möchte ich diesen String in der App verarbeiten, das heisst erst mal in ein Array schreiben.
Nachdem ich viel versucht und gesucht habe, sollte meiner Meinung nach folgendes funktionieren:
Code:
public class DatenHolen extends AsyncTask<String, String, String> {
private Context context;
private ListView list;
AlertDialog alertdialog;
DatenHolen (Context ctx) {
context = ctx;
}
@Override
protected String doInBackground(String... params) {
try {
URL oracle = new URL("http://singler.ch/cuckapp/get_data.php");
URLConnection yc = oracle.openConnection();
// InputStream is = yc.getInputStream(); <--------- Diese Zeile
// InputStreamReader isr = new InputStreamReader(is);
// BufferedReader in = new BufferedReader(isr);
String inputLine;
// while ((inputLine = in.readLine()) != null)
// System.out.println(inputLine);
// in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// String[] arr = data.split("<br>");
}
}
Wen ich die Zeile "InputStream is = ...." auskommentiere, stürzt das Programm ab. Im Android Monitor:
Code:
05-05 15:11:44.886 3485-3485/com.example.thomas.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.thomas.myapplication, PID: 3485
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.example.thomas.myapplication.DatenHolen.doInBackground(DatenHolen.java:49)
at com.example.thomas.myapplication.MainActivity.set_all(MainActivity.java:149)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Verstehe ich da etwas nicht bezüglich Backgroud Prozess?
Ich möchte wie gesagt nur den String aus dem PHP-Programm in ein Array einlesen um nachher Textfelder damit zu belegen.
Wäre toll, wenn mir jemand helfen könnte.
Danke,
Thomas