Android:UnknownHostException

时间:2010-07-22 22:50:45

标签: android http post android-emulator

我正在使用Android SDK 2.2,使用模拟器测试我的应用程序。我想发送HTTP帖子。当我这样做时,我得到一个UnknownHostException。我已经放置了所需的权限
<uses-permission android:name="android.permission.INTERNET" /&GT;
在manifest.xml中。此外,我可以在模拟器上打开浏览器并导航到URL,没有任何问题。

这是我的代码:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost( uri );
HttpResponse response = null;
try
{
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
2 );
nameValuePairs.add( new BasicNameValuePair( "id", "edit-name" ) );
nameValuePairs
.add( new BasicNameValuePair( "stringdata", userName ) );
httppost.setEntity( new UrlEncodedFormEntity( nameValuePairs ) );

// Execute HTTP Post Request
response = httpclient.execute( httppost );
// Log.i( "HttpManager:", "======> response: "
// + response.getEntity().getContent() );

}
catch (ClientProtocolException e)
{
Log.e( "HttpManager", "ClientProtocolException thrown" + e );
}
catch (IOException e)
{
Log.e( "HttpManager", "IOException thrown" + e );
}

13 个答案:

答案 0 :(得分:116)

好的,我觉得很蹩脚...... INTERNET权限标记是清单标记的子标记,而不是应用程序标记。啧!

答案 1 :(得分:51)

为了别人的考虑,我遇到了这个问题,谷歌让我着迷。正如anisbet所提到的,我仔细检查了我的许可标签,它位于正确的位置。

我最终启动了内置浏览器的android,并从我的网络服务器和Google.com获得相同的响应(虽然计算机本身很好)。我终止了android模拟器并重新启动;第一次尝试工作。

在查看代码之后,重启模拟器可能是值得的。在对模拟器完全公平的情况下,一堆程序在执行此操作后不久就崩溃了,所以在我的计算机中可能还有其他事情发生了。尽管如此,这给我浪费了大量的时间,所以也许这会让别人感到头疼。

祝你好运!

答案 2 :(得分:33)

确保您有互联网连接。当我忘记我正在使用没有互联网连接的手机进行测试时,就会发生这种情况。

答案 3 :(得分:17)

你知道为我解决的是在关闭清单标记之前放置权限,如下所示:

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

答案 4 :(得分:8)

有时在模拟器中运行应用程序时会发生这种情况。只需重启模拟器即可解决问题。它对我有用!

答案 5 :(得分:5)

如果上述方法都不奏效,请尝试退一步,确保您的设备或模拟器可以通过打开浏览器实际访问互联网。

答案 6 :(得分:2)

我在测试一个minSdkVersion设置为4的应用程序时遇到了类似的问题,我试图在G1上运行它。将它改为3解决了我的问题。

答案 7 :(得分:2)

我遇到了同样的问题。我在Android Manifest文件中拥有正确的权限,而Url也是正确的。我在网络浏览器中收到回复。我重新启动了IDE,Emulator,但没有解决问题。所以我使用AVD管理器删除了AVD,然后启动了模拟器,它开始工作。

答案 8 :(得分:2)

最后一项检查是您的域名是有效域名。在域中使用下划线是无效的,并且会抛出未知的主机异常。

答案 9 :(得分:1)

另一件事:事实证明,互联网本身并不适合我。使用这些开关从命令行启动模拟器为我修复了它:emulator -avd your_avd_name -dns-server 8.8.8.8

答案 10 :(得分:0)

连接到WiFi时,我发现此错误。我一关闭了WiFi就行了。由于这个Android错误,UnknownHostException很可能被抛出:

http://code.google.com/p/android/issues/detail?id=67324

答案 11 :(得分:0)

如果您没有使用模拟器,请检查此项

我今天遇到了同样的问题,我没有使用仿真器,而是在移动设备上进行USB调试以进行测试。

我没有在我的手机中打开数据,所以我得到了UnknownHostException,一旦我开启就解决了。

答案 12 :(得分:0)

我在使用模拟器时遇到了同样的问题,因为我在笔记本电脑上更改了wifi,所以重新启动模拟器的wifi解决了我的问题。