我正在使用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 );
}
答案 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
很可能被抛出:
答案 11 :(得分:0)
如果您没有使用模拟器,请检查此项
我今天遇到了同样的问题,我没有使用仿真器,而是在移动设备上进行USB调试以进行测试。
我没有在我的手机中打开数据,所以我得到了UnknownHostException
,一旦我开启就解决了。
答案 12 :(得分:0)
我在使用模拟器时遇到了同样的问题,因为我在笔记本电脑上更改了wifi,所以重新启动模拟器的wifi解决了我的问题。