Android http连接exception

我的Android 3.1模拟器有一些问题。 我无法得到我的XML文件。

protected InputStream getInputStream() { try { return feedUrl.openConnection().getInputStream(); } catch (IOException e) { throw new RuntimeException(e); } } 

以下是错误追踪:

 08-07 22:34:26.657: ERROR/AndroidRuntime(563): Caused by: android.os.NetworkOnMainThreadException 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at java.net.InetAddress.lookupHostByName(InetAddress.java:477) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at java.net.InetAddress.getAllByName(InetAddress.java:249) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at maps.test.BaseFeedParser.getInputStream(BaseFeedParser.java:30) 08-07 22:34:26.657: ERROR/AndroidRuntime(563): at maps.test.DomFeedParser.parse(DomFeedParser.java:23) 

我想我不能连接到互联网,即使使用<uses-permission android:name="android.permission.INTERNET"/> 。 但与此同时,Google API运行良好。

Solutions Collecting From Web of "Android http连接exception"

造成:android.os.NetworkOnMainThreadException

在Honeycomb中,他们已经走进了一个陷阱,想要抓住那些试图在主线上做耗时的networking操作的人。

来自: http : //developer.android.com/reference/android/os/NetworkOnMainThreadException.html

应用程序尝试在其主线程上执行联网操作时引发的exception。

这只适用于定位到Honeycomb SDK或更高版本的应用程序。 针对较早的SDK版本的应用程序被允许在其主要事件循环线程上进行联网,但是非常不鼓励。 请参阅“ devise响应性 ”文档。

另请参阅StrictMode 。

(请注意,您可以通过对发布的错误消息顶部的例外进行networkingsearch,立即发现此问题。)

因为像查找主机名这样的东西可能需要很长时间,而且不确定,所以不应该从主线程上的需要快速返回的事件函数中调用(如在几毫秒内)。 如果其中一个函数返回的时间太长,Android将失去向程序发送消息的能力,并可能popup令人畏惧的“应用程序不响应”对话框。

你应该移动你的networking操作(至less是需要等待一个结果或阻塞清除,以便你可以发送更多)到一个线程。 如果networking操作来自一段API代码,那么你可能不应该在主线程中调用它。

使用asynchronous任务或

 if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } 

你有

 <uses-permission android:name="android.permission.INTERNET" /> 

在您的Android Manifest? 它应该在你的application标签上方

只有针对Honeycomb SDK或更高版本的应用程序才会抛出此exception。 你可能会瞄准你的sdk等于或高于api级别11.只需将其更改为api级别8或11以下的其他api级别。您的问题可能会得到解决

这是同样的问题,它已经通过改变API级别解决了。

我希望它可以帮助你。

从AndroidManifest.xml中删除android:targetSdkVersion“version_number”

我删除了它,我的问题解决了