网络作为android的数据存储的一种,那么极大的扩大了app的使用范围,因为任何信息我们都可以从网络上获取,试想一下我们自己搭建一个服务器,然后通过app向服务器请求数据,那么要修改显示数据的时候,我们只需要修改服务器上的数据,app只是一个显示载体。目前确实有很多app是这样开发的,在app内部可以嵌套一个浏览器,当然也可以使用android自带的webview,那么开发就可以分开了,android的做android的部分,网站的做网站的部分,极大的提高了开发效率,而且也增加了app的功能和多样性,是不是很赞。今天我们来简单介绍一下android通过网络来获取数据:
用作测试,我在自己机器上搭建了一个Tomcat7.0服务器,很简单,搭建可以参照其他博客搭建一个,用作自己测试很方便。然后创建了一个网站项目(Web1),在网站中放置了一个txt文件: android.txt. 然后我们看怎么通过网络来获取并读取它的内容。
这两个文件是相当于服务器上的文件:
我们来看看android的代码:
getNetDataBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { URL url = new URL( "http://192.168.1.23:8080/Web1/android.txt"); URLConnection urlConn = url.openConnection(); InputStream is = urlConn.getInputStream(); byte[] buffer = new byte[is.available()]; is.read(buffer); String words = EncodingUtils.getString(buffer, "UTF-8"); Log.e(TAG, "words:" + words); } catch (IOException e) { e.printStackTrace(); } } });
获取的结果:
注意:
1. http://192.168.1.23:8080/Web1/android.txt 这个地址中,192.168.1.23 是我在局域网中的IP地址,这里就android模拟器就不要使用127.0.0.1来访问本机上的服务器了,因为这个地址已经被android模拟器自己占用,所以要用局域网ip地址访问。 8080是端口号,根据你自己的服务器配置而定。
2. 我们在将字节流转化为string的时候,最好是指定编码格式,通常的做法就是使用 EncodingUtils来转换,UTF-8是一种编码格式,也可以使用GB2312等,自己去查看一些资料吧。这个格式应该是按照服务器上这个文件的格式来确定的。
3. android中访问网络需要权限: <uses-permission android:name="android.permission.INTERNET"/>
这个例子很简单,只是为了引导一下,以后再做详解!
原文地址:http://blog.csdn.net/u013647382/article/details/41863451