无需第三方的网络下载 GET请求

来源:互联网 发布:mac 安装adobe字体 编辑:程序博客网 时间:2024/04/28 05:32

不带handle的方法

public class NetWorkUtils {public static byte[] getBytes(String path){InputStream is =null;ByteArrayOutputStream baos =null;//TODO  下载图片//params[0]:可变参数的第一个值就是我们要下载的网址try {URL url = new URL(path);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");if (connection.getResponseCode() == 200) {is =  connection.getInputStream();baos =  new ByteArrayOutputStream();int len = 0;byte [] buffer = new byte[1024];while((len = is.read(buffer)) != -1){baos.write(buffer, 0, len);}byte[] bytes = baos.toByteArray();return bytes;}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {is.close();baos.close();} catch (IOException e) {e.printStackTrace();}}return null;}}




///带handle的下载/** * 网络下载的工具类 */


/** * 网络下载的工具类 */public class HttpUtils {    public static final int TIMEOUT = 10000;    //使用handler,负责将回调运送到主线程    private final static Handler handler=new Handler();    /**     *网络下载通过回调,奖数据传递过去,回调的字节数组     * @param path 下载的地址     * @param listener  回调接口     */    public static void get(final String path, final OnFetchDataListener listener){        //如果其中一个为空,表示下载条件不成熟        if (TextUtils.isEmpty(path)||listener==null){            return;        }        //开启一个线程,在线程里面执行下载图片的操作        new Thread(new Runnable() {            @Override            public void run() {                try {                    URL  url=new URL(path);                    //打开地址的连接,用的http协议                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setReadTimeout(TIMEOUT);                    connection.setConnectTimeout(TIMEOUT);                    connection.connect();//开启连接                    if (connection.getResponseCode()==                            HttpURLConnection.HTTP_OK){                        //当值为200表示下载成功                        InputStream is=connection.getInputStream();                        final byte[] ret=is2ByteArray(is);                        if (ret!=null){                            handler.post(new Runnable() {                                @Override                                public void run() {                                   listener.onFetch(ret);                                }                            });                        }                    }                } catch (Exception e) {                    //打印异常                    System.out.println("======>"+e.toString());                    e.printStackTrace();                }            }        }).start();    }    /**     * 强输入流转为字节数组     * @param is 输入流     * @return 字节数组     */    private static byte[] is2ByteArray(InputStream is) {        byte[] ret=null;        if (is==null){            return ret;        }        ByteArrayOutputStream bos=null;        try{            bos=new ByteArrayOutputStream();            int len=0;            byte[] buffer=new byte[1024];            while ((len=is.read(buffer))!=-1){                bos.write(buffer,0,len);            }            ret=bos.toByteArray();        }catch (Exception e){            System.out.println("============>"+e.toString());            e.printStackTrace();        }finally {            try {                bos.close();                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return ret;    }    //网络数据接口的回调    public static interface OnFetchDataListener{        void onFetch(byte[] data);    }}


           
}

1 0
原创粉丝点击