Android 4 HttpResonce Exception

  • 1 Antworten
  • Neuster Beitrag
M

MegaChroniX

Neues Mitglied
Threadstarter
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:
L

Lightning2010

Neues Mitglied
NetworkOnMainThreadException
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
 
Oben Unten