Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android http连接异常_Android - Fatal编程技术网

Android http连接异常

Android http连接异常,android,Android,我的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

我的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)
08-07 22:34:26.657:错误/AndroidRuntime(563):由以下原因引起:android.os.NetworkOnMainThreadException
08-07 22:34:26.657:ERROR/AndroidRuntime(563):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于java.net.InetAddress.lookupHostByName(InetAddress.java:477)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于java.net.InetAddress.getAllByName(InetAddress.java:249)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:69)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:48)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieverresponse(HttpURLConnectionImpl.java:1038)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):在maps.test.BaseFeedParser.getInputStream(BaseFeedParser.java:30)
08-07 22:34:26.657:ERROR/AndroidRuntime(563):位于maps.test.DomFeedParser.parse(DomFeedParser.java:23)
我想我无法连接到互联网,即使是使用
。但与此同时,谷歌API也运行得很好。

你有什么建议吗

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

在你的Android清单中?它应该在您的
应用程序
标记上方

原因:android.os.NetworkOnMainThreadException

在Honeycomb中,他们设置了一个陷阱,以捕获试图在主线程上执行可能耗时的网络操作的人

发件人:

当应用程序试图在其主线程上执行网络操作时引发的异常

这仅适用于目标为蜂巢SDK或更高版本的应用程序。针对早期SDK版本的应用程序可以在其主事件循环线程上进行联网,但这是非常不鼓励的。见文件

另见

(请注意,您可以通过在发布的错误消息顶部对异常进行web搜索,立即发现此问题。)

因为查找主机名之类的事情可能需要很长的时间,而且有点不确定,所以不应该从主线程上的事件函数调用它们,这些函数需要快速返回(如在几毫秒内)。如果其中一个函数需要很长时间才能返回,Android将失去向程序发送消息的能力,并且可能会弹出可怕的应用程序无响应对话框


您应该将您的网络操作(至少是任何需要等待结果或阻塞清除以便发送更多内容的操作)移动到线程。如果网络操作来自一段API代码,您可能不应该在主线程上调用该代码。

此异常仅适用于目标为Honeycomb SDK或更高版本的应用程序。 您的sdk目标可能等于或高于api级别11。只需将其更改为api级别8或其他低于11的api级别。你的问题可能会解决

同样的问题,它已经通过改变api级别解决了


我希望它能帮助你

从AndroidManifest.xml中删除android:targetSdkVersion“version\u number”

我删除了它并解决了问题

使用异步任务或

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

我已经准备好补充了,别忘了我说过GoogleAPI工作得很好。但是你认为GoogleAPI可以在没有连接的情况下工作吗?因为我的位置根本不起作用!但我可以访问地图并添加静态覆盖尝试将uses permission标记移到应用程序标记上方,因此这与另一个答案相同,Chris Stratton答对了,这只是因为网络维护线程例外可能与我理解的方式重复,引发此异常是为了防止在主线程上执行耗时的网络操作。所以问题不在于他瞄准的API,而是他处理网络操作的方式;)我收到了相同的错误,但我的http工作在一个单独的线程中,即异步任务。可能出了什么问题?您可以指导我吗?您可能没有正确使用异步任务,或者没有将所有网络操作放在后台方法中,或者从ui线程调用后台方法而不是启动异步任务。当您检查堆栈跟踪时,您将发现是哪个。我彻底检查了,http调用是在doInBackground()方法中调用的,该方法是从.execute()命令调用的,流仍然返回:org.apache.harmony.luni.internal.net.www.protocol.http。FixedLengthInputStream@405259f0This对于各种快速评估来说都是一个很好的提示。您不必在线程/异步细节方面浪费时间。谢谢!