【问题标题】:Android: emulator unable to resolve hostname for local workstationAndroid:模拟器无法解析本地工作站的主机名
【发布时间】:2013-09-21 17:11:13
【问题描述】:

我正在尝试使用apache httpClient 从安卓模拟器连接到运行我的计算机的网络应用程序。

HttpPost post = new HttpPost("http://dev.example.com:8443/gatekeeper/rs/authenticate/login");
post.setHeader("Content-type","application/x-www-form-urlencoded");
post.setEntity(new UrlEncodedFormEntity(formparams));
HttpClient client=new DefaultHttpClient();
response = client.execute(post);

我确实有如下所需的 android 清单配置

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我确实检查了我可以从模拟器上的浏览器访问互联网。我也无法从浏览器访问应用程序 URL。我的应用程序也因错误而失败

java.net.UnknownHostException:无法解析主机 “dev.example.com”:没有与主机名关联的地址

当使用我的计算机的 IP 地址时,我的应用程序运行良好。我的主机文件中也有条目

192.168.1.8 dev.example.com

我会在这里遗漏什么?看来android模拟器无法查看我的hosts文件来解析主机名!

【问题讨论】:

  • 我猜安卓开发者决定不允许(不允许)模拟器使用主机名连接到本地工作站。它可以通过 IP 地址连接到本地盒子。听起来对我不公平。

标签: java android httpclient


【解决方案1】:

请在调用响应之前以编程方式检查Connectivity

或者如果没有响应也会抛出这个异常

【讨论】:

  • 当我使用IP地址时程序运行良好,我认为这表明它不是连接问题?如果我错了,请纠正我。
  • 如果它说无法解析主机,这意味着它的连接问题可能是由于互联网、端口或协议可能如 https 或 http
  • 从 Eclipse 运行时,相同的代码可以正常工作(在 java 程序的 main 方法中)。这让我怀疑安卓模拟器是否有问题。
猜你喜欢
  • 1970-01-01
  • 2018-11-27
  • 2016-07-05
  • 2021-05-07
  • 2013-07-14
  • 2018-09-28
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
相关资源
最近更新 更多