Android 4 HttpResonce Exception

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MegaChroniX, 10.04.2012.

  1. MegaChroniX, 10.04.2012 #1
    MegaChroniX

    MegaChroniX Threadstarter Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    1
    Registriert seit:
    24.10.2011
    Hallo
    ich habe eine Frage zu folgendem Codeausschnitt:

    Code:
       
    private InputStream getInputStreamFromUrl(String url) throws Exception
       {
          InputStream content = null;
          HttpClient httpclient = new DefaultHttpClient();
          HttpResponse response = httpclient.execute(new HttpGet(url));
          content = response.getEntity().getContent();
          return content;
       }
    Ich Entwickel unter der SDK Version 10 (2.3.3) und dort bekomme ich auch gültige InputStreams zurückgeliefert.

    Sobald ich jedoch ein Android4 Gerät benutze um die App zu testen steigt sie bei
    Code:
      HttpResponse response = httpclient.execute(new HttpGet(url));
    mit folgender Exception aus:

    04-10 19:59:53.782: W/System.err(611): android.os.NetworkOnMainThreadException
    04-10 19:59:53.782: W/System.err(611): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
    04-10 19:59:53.792: W/System.err(611): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
    04-10 19:59:53.792: W/System.err(611): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
    04-10 19:59:53.792: W/System.err(611): at java.net.InetAddress.getAllByName(InetAddress.java:220)
    04-10 19:59:53.792: W/System.err(611): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
    04-10 19:59:53.802: W/System.err(611): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    04-10 19:59:53.802: W/System.err(611): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    04-10 19:59:53.812: W/System.err(611): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    04-10 19:59:53.812: W/System.err(611): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    04-10 19:59:53.812: W/System.err(611): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    04-10 19:59:53.822: W/System.err(611): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    04-10 19:59:53.822: W/System.err(611): at de.facilityManager.xml.XMLManager.getInputStreamFromUrl(XMLManager.java:84)
    04-10 19:59:53.822: W/System.err(611): at de.facilityManager.xml.XMLManager.validateLogin(XMLManager.java:33)
    04-10 19:59:53.822: W/System.err(611): at de.facilityManager.LoginActivity.onClick(LoginActivity.java:48)
    04-10 19:59:53.822: W/System.err(611): at android.view.View.performClick(View.java:3511)
    04-10 19:59:53.833: W/System.err(611): at android.view.View$PerformClick.run(View.java:14105)
    04-10 19:59:53.843: W/System.err(611): at android.os.Handler.handleCallback(Handler.java:605)
    04-10 19:59:53.843: W/System.err(611): at android.os.Handler.dispatchMessage(Handler.java:92)
    04-10 19:59:53.843: W/System.err(611): at android.os.Looper.loop(Looper.java:137)
    04-10 19:59:53.843: W/System.err(611): at android.app.ActivityThread.main(ActivityThread.java:4424)
    04-10 19:59:53.843: W/System.err(611): at java.lang.reflect.Method.invokeNative(Native Method)
    04-10 19:59:53.852: W/System.err(611): at java.lang.reflect.Method.invoke(Method.java:511)
    04-10 19:59:53.852: W/System.err(611): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    04-10 19:59:53.852: W/System.err(611): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    04-10 19:59:53.862: W/System.err(611): at dalvik.system.NativeStart.main(Native Method)

    In der AndroidManifest.xml habe android.permission.INTERNET, daran liegt es nicht. :(

    Achja:
    Auf beim umstellen der SDK Version auf 14 oder 15 steigt er dort aus.



    Edit, hat sich erledigt...

    Ab Honeycomb dürfen keine Http Anfragen aus dem MainTread heraus passieren.

    Also einfach nen Tread drum legen und warten bis es fertig ist:D
     
    Zuletzt bearbeitet: 10.04.2012
  2. Lightning2010, 10.04.2012 #2
    Lightning2010

    Lightning2010 Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    8
    Registriert seit:
    30.10.2011
    Sagt eigentlich schon alles aus.

    Du darfst seit 4.0 keine Netzwerkzugriffe in deinem Haupt-Thread machen, da alles was mit Netzwerken zu tun hat relativ leicht abstürzt.
    Du musst sie in einen eigenen Thread auslagern.

    Gruß
    -Lightning2010

    edit: Zu langsam
     

Diese Seite empfehlen