【问题标题】:Android "Host is Unknown" ErrorAndroid“主机未知”错误
【发布时间】:2012-04-17 17:38:08
【问题描述】:

我收到来自 Android 的错误消息,即“主机是未知服务器:80”。我正在尝试从虚拟机上的 Android Emulator 访问服务器上的 WCF Rest 服务。是否支持此场景?顺便说一句,我可以访问该服务的帮助页面,所以我知道该服务正在运行。我可以从那个虚拟机访问它。

感谢任何帮助。我的开发环境是 Windows 7 64 BIT,使用最新的 Eclipse 版本。服务位于 Win 2008 R2 机器上。

【问题讨论】:

  • 任何类似于“主机未知”的错误都可能与 DNS 相关。您是否使用主机名或 IP 地址连接到服务?您可以从 Android 模拟器本身访问该服务的帮助吗?
  • 问:你到底有多少台主机?你已经有了你的 Win7 开发 PC 和你的 Win2008 服务器。还有你的安卓模拟器。模拟器是直接在你的 Win7 PC 上运行,还是有其他一些虚拟机在里面?
  • 问:你能在你的安卓模拟器的网络浏览器中看到你的Win2008服务器吗(这相当于“安卓模拟器能“ping”Windows服务器吗)?
  • 问:如果您将 WCF 端点地址设置为服务器的 IP 地址(而不是服务器的名称),是否可以正常工作?
  • @Ariel 我正在使用主机名;我会仔细检查是否可以从模拟器中访问它。这是个好主意。

标签: java android eclipse rest windows-7


【解决方案1】:

我的猜测是您错误地配置了主机名。

根据错误消息,您似乎提供了“:80”作为主机名或 IP 地址。如果平台认为该字符串应该是 DNS 名称并尝试进行 DNS 查找,则查找将失败,从而导致某种“未知主机”诊断。

如果这是问题所在,那么有几个观察结果。

  • 如果您尝试在静态配置文件(或其他)中引用“此设备”,您可以使用其主机名或 IP 地址(如果您知道它们),或环回接口的 IP 地址这是(最有可能)“127.0.0.1”。空字符串可能不起作用。

  • 端口号(例如“80”)不应包含在主机名/IP 地址中……除非您在解析主机字符串之前将其解析出来。

【讨论】:

  • “名称解析”(例如 DNS)是最可能的罪魁祸首。这就是为什么我问 OP 是否可以浏览到他的服务器主机(或“ping”它)。但如果他在虚拟机上运行(除了 Android 模拟器的虚拟机),那么网络也可能是一个问题。恕我直言...
  • @paulsm4 - 我假设错误消息中的大线索不是红鲱鱼。
  • @paulsm4 我实际上没有提供 :80;它推断出。我只是将其称为 http:///myservicevirtualdirectory 我也会通过 IP 尝试。
  • @StephenC 我搞砸了;服务器名称在那里,但在我的帖子中我是作为 做的,所以服务器部分被剥离了。
【解决方案2】:

一旦此错误的潜在原因是忘记包含互联网权限或未将其放在正确的位置。确保您的 manifest.xml 中有以下内容,在应用程序标签之外:

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

【讨论】:

  • 我确实拥有该权限集。我会仔细检查它是否在应用程序标签之外......
  • 这是我的文件顺序:schemas.android.com/apk/res/android" package="com.packagename" android:versionCode="1" android:versionName="1.0">
  • 看起来不错,我不认为权限是您问题的原因。
【解决方案3】:

我必须使用10.0.2.2 alternative IP,因为模拟器使用的是本地 IP。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多