本实例主要是通过URL获取网络资源,在具体一点,就是简单介绍如何获取网页文本资源。获取网络资源还有获取图片、视频、音频……资源,框架基本相似。
实验时出现两点小问题:1、抛出Connection Refused的异常;
2、出现乱码。
解决办法:1、由于我用的是本地服务器,就不假思索的以为和WEB的实验一样,只要输入http://localhost:8080/就可以得到实验结果,结果错误,要用网络服务器地址。
2、 myString = new String(baf.toByteArray(), "GBK");
//myString = EncodingUtils.getString(baf.toByteArray(), "GBK");
//myString = new String(baf.toByteArray());这个出现乱码,要在txt文件保存时选中utf-8
这三种任选一种。
当然,设置用户权限这个就不用说了!
- package com.web.test;
- import java.io.BufferedInputStream;
- import java.io.InputStream;
- import java.net.URL;
- import java.net.URLConnection;
- import org.apache.http.util.ByteArrayBuffer;
- import org.apache.http.util.EncodingUtils;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- /*
- * 获取网络数据,这里展示如何获取网络上的一个poem.txt文本文件,架设了一个本地服务器
- */
- public class HelloWeb extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- TextView tv = new TextView(this);
- String myString = null;
- try {
- URL uri = new URL("http://172.16.194.157:8080/my/my.txt");//注意,这里的URL地址必须为网络地址,
- //URL uri = new URL("http://localhost:8080/my/poem.txt");
- //本地地址http://localhost:8080/my/poem.txt会报Connection Refused的异常
- URLConnection ucon = uri.openConnection();
- InputStream is = ucon.getInputStream();
- BufferedInputStream bis = new BufferedInputStream(is);
- ByteArrayBuffer baf = new ByteArrayBuffer(100);
- int current = 0;
- while((current = bis.read()) != -1) {
- baf.append((byte)current);
- }
- myString = new String(baf.toByteArray(), "GBK");
- //myString = EncodingUtils.getString(baf.toByteArray(), "GBK");
- //myString = new String(baf.toByteArray());这个出现乱码,要在txt文件保存时选中utf-8
- } catch(Exception e) {
- myString = e.getMessage();
- }
- tv.setText(myString);
- this.setContentView(tv);
- }
- }
修改txt文本文件的编码格式

出现异常

运行成功之后
