App crasht durch httpclient?

  • Antworten:2
  • Bentwortet
Markus M.
  • Forum-Beiträge: 16

09.09.2014, 21:17:15 via Website

Hallo,

ich versuche mich jetzt seit ein paar Tagen an einer App in der ich ein Array über einen httpclient an eine online-gehostete .php zu übergeben. Leider crasht die App immer wenn ich die Activity zum senden auslöse.
Ich habe leider keine Idee was ich falsch gemacht habe, oder was ich machen kann damit es nicht crasht, beschäftige mich auch erst seit relativ kurzer Zeit mit der Entwicklung von Apps. Wäre echt gut wenn mir wer der vielleicht mehr Erfahrung damit hat, dabei helfen könnte.
Internet-Berechtigung hab ich natürlich schon vergeben.

Hier die Activity:

public void send(View v)
{
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("meine.php"); 

    try {
        // Add your data
        List nameValuePairs = new ArrayList(1);
        nameValuePairs.add(new BasicNameValuePair("username", "nachname.vorname"));

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

        InputStream is = response.getEntity().getContent();
        BufferedInputStream bis = new BufferedInputStream(is);
        ByteArrayBuffer baf = new ByteArrayBuffer(20);

        int current = 0;

        while((current = bis.read()) != -1){
            baf.append((byte)current);
        } 

        /* Convert the Bytes read to a String. */
        text = new String(baf.toByteArray());
        txtvw.setText(text);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }

Hier der Teil aus der Logcat der beim Crash entsteht :

09-09 20:45:10.917: W/dalvikvm(8188): threadid=1: thread exiting with uncaught exception (group=0x41644c80)

09-09 20:45:10.926: E/AndroidRuntime(8188): FATAL EXCEPTION: main
09-09 20:45:10.926: E/AndroidRuntime(8188): Process: com.name.app, PID: 8188
09-09 20:45:10.926: E/AndroidRuntime(8188): java.lang.IllegalStateException: Could not execute method of the activity
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.view.View$1.onClick(View.java:3830)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.view.View.performClick(View.java:4445)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.view.View$PerformClick.run(View.java:18446)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.os.Handler.handleCallback(Handler.java:733)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.os.Handler.dispatchMessage(Handler.java:95)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.os.Looper.loop(Looper.java:136)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.app.ActivityThread.main(ActivityThread.java:5146)
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.lang.reflect.Method.invokeNative(Native Method)
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.lang.reflect.Method.invoke(Method.java:515)
09-09 20:45:10.926: E/AndroidRuntime(8188): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
09-09 20:45:10.926: E/AndroidRuntime(8188): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
09-09 20:45:10.926: E/AndroidRuntime(8188): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
09-09 20:45:10.926: E/AndroidRuntime(8188): at dalvik.system.NativeStart.main(Native Method)
09-09 20:45:10.926: E/AndroidRuntime(8188): Caused by: java.lang.reflect.InvocationTargetException
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.lang.reflect.Method.invokeNative(Native Method)
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.lang.reflect.Method.invoke(Method.java:515)
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.view.View$1.onClick(View.java:3825)
09-09 20:45:10.926: E/AndroidRuntime(8188): ... 12 more
09-09 20:45:10.926: E/AndroidRuntime(8188): Caused by: android.os.NetworkOnMainThreadException
09-09 20:45:10.926: E/AndroidRuntime(8188): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
09-09 20:45:10.926: E/AndroidRuntime(8188): at java.net.InetAddress.getAllByName(InetAddress.java:214)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-09 20:45:10.926: E/AndroidRuntime(8188): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-09 20:45:10.926: E/AndroidRuntime(8188): at com.name.app.MainActivity.send(MainActivity.java:71)
09-09 20:45:10.926: E/AndroidRuntime(8188): ... 15 more
09-09 20:48:56.443: W/dalvikvm(9946): threadid=1: thread exiting with uncaught exception (group=0x41644c80)

Hoffe mir kann wer helfen, vielen Dank schonmal.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.09.2014, 21:24:27 via Website

Hallo Markus,

Wilkommen im Forum! :)

Also der Fehler ist folgender:

Caused by: android.os.NetworkOnMainThreadException

Dabei musst du beachten, dass Netzwerkoperationen seit Android 3.0 nicht mehr im MainThread ausgeführt werden können.
Das laden einer Webseite muss nun in einem anderen Thread ausgeführt werden.
Für ein Tutorial siehe hier:https://www.nextpit.de/forum/568854/tutorial-download-einer-webseite

Lg Pascal

— geändert am 09.09.2014, 21:24:57

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Markus M.
  • Forum-Beiträge: 16

09.09.2014, 21:47:23 via Website

Vielen Dank schonmal :)
Ich probiere das direkt aus, melde mich dann nochmal.

LG Markus

Antworten