代码之家  ›  专栏  ›  技术社区  ›  Russ Bateman Basil Bourque

安卓java.net.UnknownHostException:主机未解析

  •  50
  • Russ Bateman Basil Bourque  · 技术社区  · 16 年前

    此代码无效:

    URL         url   = new URL( xmlPath );
    InputSource input = new InputSource( url.openStream() );
    

    如果来自不同的开发主机(机器)和浏览器,则一直使用相同的代码成功地命中了未知的hostexception,即使主机存在。

    我再问一次这个问题可能有点过分了,重复一次 Android java.net.UnknownHostException: Host is unresolved (strategy question) . 论坛软件不允许我对这个问题不满意的答案发表评论(为了引起更多的注意,我最终找到了解决办法)。也许我还不够受欢迎,还没有被赋予这种特权。在此期间,我基本上是重新发布的问题和一个不同的答案。

    基本上,我承认Android设备在某些情况下很难使用DNS,但我已经尝试过了,例如anddev.org 如何使用SAX解析器的示例,它在我拥有的一台机器上工作,而不是在另一台机器上工作。

    编辑:

    我是a)问一个问题(已经被问过但没有成功回答),b)回答这个问题是为了那些我的答案对他们有用的人。

    16 回复  |  直到 9 年前
        1
  •  70
  •   Russ Bateman Basil Bourque    16 年前

    答案非常简单:删除,然后在Eclipse中重新创建AVD(虚拟设备/仿真器)。对我来说——第一次。

        2
  •  55
  •   yancyn    15 年前

    我一直按照上面的步骤,但仍然没有尝试运气,最后我才意识到我的应用程序不允许去外面的模拟器互联网。所以只需在清单文件中添加用户权限。完成!多亏了乔兹,我明白了 http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

    1. android.permission.ACCESS_NETWORK_STATE
        3
  •  14
  •   milesology    14 年前

    在我的例子中,我从手机上的URL下载了一个XML文件,但是在这个线程中描述了这个问题。

    为了修好它,我不仅需要有正规的互联网许可

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

    但我也需要

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

    作为一个建议,如果你的设备可能需要相同的东西,尝试导航到你的手机浏览器的网址,看看是否提示需要SD卡或其他东西。

    希望能帮助别人。

        4
  •  13
  •   beetstra    15 年前

    我也在手机上看到过(在进行USB调试时)。解决方案是禁用WiFi,然后重新启用。

        5
  •  8
  •   biegleux piyush    13 年前

    它的工作,为我增加了用户的互联网权限 AndroidMenifest.xml

    <uses-permission android:name="android.permission.INTERNET"/>
    
        6
  •  7
  •   Community Mohan Dere    9 年前

    就我而言,问题出在别处。我不得不:

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

    • 在我的模拟器上设置代理服务器: Emulator > settings > wireless and network > Mobile Networks > Access Point Name > "the access point you have ;)"

    以及

    • 实现异步任务。

    我在这里找到了解决办法:

    HTTP doesn't work in Android emulator

    “这个例外是有原因的。网络活动需要时间, 负责更新UI的,将冻结线程直到 联网已经完成(这是每个线程上发生的事情,但是当 它是在专用线程上执行的,没关系)。在Android中,如果 UI线程在5秒钟内未处于活动状态,它将显示应用程序处于活动状态

        7
  •  6
  •   Bernhard Barker    8 年前

    • 按下菜单按钮并打开“设置”

    • 打开“wireles and network”

    • 开放“移动网络”

    • 选中“数据启用”

        8
  •  5
  •   Vito Andolini    14 年前

    我无法摆脱模拟器的“未知hostexceptions”,模拟器的浏览器也无法连接。尝试了所有我能在堆栈溢出和其他地方找到的建议。

    希望这能帮助别人。

        9
  •  3
  •   Dan    15 年前

    非常感谢你,罗斯。我很高兴你坚持下来。我花了一个小时的大部分时间阅读了各种可能的修复方法。对于其他遇到这个问题的人,我将在这里简要回顾一下: -检查清单中是否有Internet使用权限 -更改操作系统上的防火墙设置 -共享连接(仅限windows)

    我的修理费比你的多一点,但不多。

    我后来发现了这个。它很可能达到同样的效果,但除非问题再次出现,否则我不能保证。 http://www.jiahaoliuliu.com/2011/02/stopping-android-applications-already.html 实现相同结果的另一个技巧是在运行配置的目标选项卡中勾选“擦除用户数据”。

        10
  •  3
  •   htafoya    14 年前

    我的问题是,当通过WIFI从电脑共享互联网时,在以太网连接丢失并重新连接后,我无法在手机上实现连接。这是通过重新启动计算机上的internet共享修复的。

    希望它能帮助别人。

        11
  •  2
  •   AQ78    14 年前

        12
  •  2
  •   Lei Cao    13 年前

    我只是重新启动AVD并添加用户权限,然后它就可以工作了。

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

        13
  •  2
  •   Antesh Sharma    13 年前

    问题已解决

    运行cd C:\Program Files\Android\Android sdk\tools

    运行android list avd in cmd返回可用avd的列表。。。。我的情况是我的ABC\U avd

    在cmd中运行emulator@Myabc\u avd-dns server 8.8.8.8…avd将显示avd 转到avd的浏览器并键入www.google.com 将显示谷歌网页。 你现在可以使用像myfrstapp.com

    如果一切顺利,那么您可以使用eclipse运行您的项目,但要确保它是在avd中运行的,avd是从cmd运行的。

        14
  •  0
  •   Goutham    12 年前

    在我的情况下,我刚刚重新启动模拟器,它的工作。

        15
  •  0
  •   Lalit Jawale    11 年前

    太简单了。

    1. 右键单击您的项目
    2. 单击“ "
    3. 单击“ "
    4. 窗户会被打开的
    5. 在左侧面板中选择项目运行配置
    6. 然后在右面板中打开“ “选项卡
    7. 向下滚动
    8. 您将在底部得到一个选项,名为“ 其他Emulator命令行参数 "
    9. “放” -dns服务器8.8.8.8 “这些价值观( 不带双引号 )在文本框中。

    就这样。。。

        16
  •  0
  •   saswanb    9 年前

    我在登录VPN时启动模拟器时遇到了这个问题。注销VPN没有任何效果,直到我退出模拟器并重新启动。如果您的仿真器没有正确解析名称,那么很容易进行测试-只需转到 仿真器

        17
  •  0
  •   Hieu.Gi    7 年前

    请尝试重新启动模拟器。