无法解析主机“ <在此处插入URL>”没有与主机名关联的地址


98

我尝试按照本教程进行操作: 从Web获取数据

我尝试在最新的平板电脑平台Android 3.0上实现它,但是,出现此错误:“ 无法解析主机“ www.anddev.org”没有与主机名相关联的地址。

您可以检出我只是用来证明文件存在的URL。 http://www.anddev.org/images/tut/basic/getdatafromtheweb/loadme.txt

我创建了一个私有类,并使用asynctask对其进行了扩展。这是代码:

    private class Downloader extends AsyncTask<String,Void,String>{
    String myString = null;
    @Override
    protected String doInBackground(String... arg0) {
        try{
            URL myURL = new URL("http://www.anddev.org/images/tut/basic/getdatafromtheweb/loadme.txt");
            URLConnection ucon = myURL.openConnection();
            InputStream is = ucon.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);

            ByteArrayBuffer baf = new ByteArrayBuffer(50);
            int current = 0;
            while((current=bis.read())!=-1){
                baf.append((byte)current);
            }
            myString = new String (baf.toByteArray());
        }catch(Exception e){
            myString = e.getMessage();
        }
        return myString;
    }
@Override
protected void onPostExecute(String result){
    tv.setText(result);
}
}

任何帮助将不胜感激。


您可以参考此链接。希望这将帮助
Summved耆那教的

Answers:


148

我敢打赌,您忘了授予您的应用程序使用互联网的权限。尝试将其添加到您的android清单中:

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

总是看到logcat来获取错误信息,那么您的时间消耗将得到节省……当您忘记添加权限时.... logcat显示错误信息……或生成崩溃报告... ........
Vipin Sahu 2012年

14
好吧,我也有这个问题。我的权限设置正确。URLConnection在大多数情况下都能正常工作。但有时,我连续几次遇到此错误。调试起来特别困难,因为它不时出现……
hendrix 2012年

您也获得我的允许,对帮助社区感到非常
高兴

我添加了此权限,然后我也遇到相同的错误,模拟器中是否存在任何问题
Pratik Butani 2013年

7
我遇到此错误是因为我之前已经关闭了移动数据,却忘了重新打开它。它在办公室工作正常,但是当我离开熟悉的wifi时,我就收到了错误消息。有时候这是愚蠢的事情:
Karmic Coder 2014年

117

请检查您是否有有效的互联网连接。


嗯...:DI检查了一下,看来您是对的。我真的不知道为什么,但是我的互联网连接还可以,但是模拟器中的浏览器无法访问任何内容。奇怪。.几分钟前模拟器浏览器运行良好。
2011年

1
我觉得自己是最大的白痴。我当时在家里而不是在办公室里工作,所以忘记设置WiFi。有时候,要使自己记住自己是个白痴,就需要像这样的事情。因此,衷心感谢您使我感到自己像个白痴!:)
RileyE

2
我也是!可以通过某种方式选择Wifi和飞机模式,因此我只需要禁用飞机模式(我并没有真正连接到互联网掌上电脑)
d1jhoni1b 2014年

1
大声笑不知道为什么我希望我的S3在不打开无线功能的情况下登录。
Declan McKenna 2014年

达米特 昨天,我关闭了与模拟器的互联网连接,却忘了今天早上打开它,谢谢!
罗伯特·克莱格

65

可能您已获得许可

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

您可能忘记了在移动设备或任何设备中打开Internet


2
没有将设备安装在wifi上就是让我失望的原因!哎呀
Nico 2015年

11
重新启动模拟器为我修复了它。
凯西

感谢您强调“移动设备”部分。:)
BurakKarakuş18年

12

您是否可以从内置浏览器中访问该网址?

如果不是,则表明您的网络设置不正确。如果您位于仿真器中,则可以查看文档的“ 网络”部分

如果在OS / X上,则仿真器使用的是“第一个”接口,即使您在无线(en1)上,仿真器也将使用en0,因为没有电缆的en0仍被标记为up。您可以发出ifconfig en0 down并重新启动模拟器。我想我已经读过Windows上的类似行为。

如果您使用的是Wifi / 3G,请致电您的网络提供商以获取正确的DNS设置。


嗯...:DI检查了一下,看来您是对的。我真的不知道为什么,但是我的互联网连接还可以,但是模拟器中的浏览器无法访问任何内容。奇怪。.几分钟前,模拟器的浏览器运行正常。
2011年

谢谢!在我的情况下,将Intranet设置为导致错误的URL,使用Extranet显然解决了该问题
CGR

11

如果您有像我这样的USB互联网,则模拟器似乎不喜欢打开和关闭连接,因此您可能需要重新启动模拟器


6

由于您的主机,此错误无法通过DNS转换为IP地址。

解决这个问题:

1-确保您连接到互联网(检查网络质量)。

2-确保您获得访问网络的适当权限

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

4

我遇到了同样的错误,问题是我在使用VPN,但我没有意识到。断开VPN并重新连接wifi后,它解决了。



0

如果您间歇性地在wifi或LAN上看到此消息,但您的移动Internet连接似乎正常,则很可能是您的ISP的廉价网关路由器正承受高流量负载。

您应该捕获这些错误,并向用户显示提醒以关闭使用网络的任何其他应用程序。

通过在桌面上运行几个高清youtube视频进行再现来进行测试,或者只是去忙碌的星巴克。



0

我在Android 10模拟器上遇到了相同的问题,并且可以按照以下步骤解决问题:

  1. 转到设置→网络和互联网→高级→私有DNS
  2. 选择专用DNS提供程序主机名
  3. 输入:dns.google
  4. 点击保存

使用此设置,您的URL应该可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.