无需第三方的网络下载 GET请求
2016-03-21 20:23
543 查看
不带handle的方法
///带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 block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.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); } }
}
相关文章推荐
- HTTP Headers
- Linux网络基础-IP、子网掩码、端口号、DNS、网关
- Convolutional Neural Networks卷积神经网络
- 基于Http协议的Web服务器
- 计算机网络学习笔记——物理层(1)
- 多线程 网络
- IOS 网络浅析-(九 NSURLSession代理简介)
- thttpd 2.25b源码分析
- thttpd+cgilua
- iOS中使用 Reachability 检测网络
- thttpd源码分析
- Nyoj 网络的可靠性(水题)
- IOS 网络浅析-(八 NSURLSession简介)
- thttpd服务器移植到ARM Linux教程
- Http协议与TCP协议简单理解
- Android Volley完全解析(二),使用Volley加载网络图片
- 使用 HttpClient 和 HtmlParser 实现简易爬虫
- socks5 proxy for http proxy
- iOS网络开发 - 浏览器
- Codeforces 653D Delivery Bears【二分+网络流】