无法解析主机“<insert url =”“here =”“>”没有与主机名关联的地址</insert>

时间:2011-04-29 08:27:20

标签: android android-asynctask android-3.0-honeycomb urlconnection

我尝试过以下教程: Getting Data from the Web

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

您可以签出我用来证明该文件存在的网址。 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);
}
}

任何帮助都会受到赞赏。

10 个答案:

答案 0 :(得分:144)

我敢打赌,你忘了给你的应用程序使用互联网的许可。尝试将此添加到您的Android清单:

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

答案 1 :(得分:112)

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

答案 2 :(得分:61)

你可能已经获得许可

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

<强> BUT

您可能忘记在移动设备或无论设备中开启互联网

答案 3 :(得分:11)

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

如果没有,则表示您的网络设置不正确。如果您在模拟器中,则可以查看文档的networking section

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

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

答案 4 :(得分:10)

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

答案 5 :(得分:4)

我遇到了同样的错误,问题在于我在VPN上并没有意识到这一点。断开VPN并重新连接wifi后解决了它。

答案 6 :(得分:2)

此外,请确保您的设备未处于飞行模式和/或已启用数据使用。

答案 7 :(得分:0)

如果您在wifi或LAN上间歇性地看到这一点,但您的移动互联网连接似乎没问题,那么您的ISP便宜的网关路由器很可能正在经历高流量负载。

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

通过在桌面上运行几个高清YouTube视频进行测试,以便重现,或者只是去繁忙的星巴克。

答案 8 :(得分:0)

在某些情况下,重新启动模拟器是可行的。

答案 9 :(得分:0)

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

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

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