码迷,mamicode.com
首页 > 移动开发 > 详细

安卓系列四(获取网络上的资源)

时间:2015-01-30 16:16:24      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

声明:这是学习总结,大家有需要的可以看看,不需要的也可以看看。好了直接上代码。

首先有一个获取取流中数据的工具类:

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
/**
 * @author  wesley
 * @version 
 * @date 2015年1月30日 下午2:12:28
 * 
 */
public class StreamUtils {
/**
 * 读取流中的数据
 * @param  in
 * @return 
 * @throws Exception
 */
public static byte[] readStream(InputStream in) throws Exception{
    ByteArrayOutputStream bStream = new ByteArrayOutputStream();
    int len = 0;
    byte[] data = new byte[1024];
    while((len = in.read(data))!=-1){
        bStream.write(data, 0, len);
    }
    in.close();
    return bStream.toByteArray();
    }
}

获取网络资源数据的服务层:(这里我们假设获取网页的源码)

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.example.utils.StreamUtils;
/**
 * @author wesley
 * @version 
 * @date 2015年1月30日 下午2:15:12
 * 
 */
public class PageService {
    public static String getPage(String path) throws Exception{
        URL url = new URL(path);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(5000);
        connection.setRequestMethod("GET");
        if(connection.getResponseCode()==200){
                InputStream in = connection.getInputStream();
                byte[] data = StreamUtils.readStream(in);
                return new String(data,"UTF-8");
        }
        return null;
    }
}

上篇博客写过不能再主线程中访问网络 所以还是采用上次那种使用 handler thread 实现

按钮的监听事件:(code 也是实现定义好的全局变量)

private final class ButtonListener implements OnClickListener{
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        final String path = pagePath.getText().toString();
        final Handler handler = new Handler(){
        public void handleMessage(Message msg){
        switch (msg.what) {
        case 0:
        codeView.setText(code);;
        break;
        }
      }
   };
    new Thread(){
        public void run(){
            try {
                    code = PageService.getPage(path);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                handler.sendEmptyMessage(0);
            }
        }.start();
    }
}

权限:

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


安卓系列四(获取网络上的资源)

标签:

原文地址:http://my.oschina.net/zhengweishan/blog/373633

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!