我尝试过以下教程: 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);
}
}
任何帮助都会受到赞赏。
答案 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模拟器上遇到了同样的问题,并且可以按照以下步骤解决问题:
使用此设置,您的URL应该可以正常工作。