这个框架是自己闲来无事封装的,主要用于请求json
1请求数据
public class HttpUtil { /** * 下载资源 * @return */ public static byte[] requestURL(String urlStr){ InputStream in = null; ByteArrayOutputStream out = null; try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setReadTimeout(3000); conn.connect(); if(conn.getResponseCode() == 200){ in = conn.getInputStream(); out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024 * 8]; int len; while((len = in.read(buffer)) != -1){ out.write(buffer, 0, len); } //得到下载好的json字符串 return out.toByteArray(); } } catch (Exception e) { e.PRintStackTrace(); } finally { try { if(in != null){ in.close(); } if(out != null){ out.close(); } } catch (IOException e) { e.printStackTrace(); } } return null; }}2基于刚才的类加上接口回调public class DownUtil { /* 创建一个拥有5个线程的线程池 */ private static ExecutorService executor = Executors.newFixedThreadPool(5); private OnDownListener onDownListener; private Handler handler = new Handler(); //设置解析JSON的接口回调 public DownUtil setOnDownListener(OnDownListener onDownListener) { this.onDownListener = onDownListener; return this; } /** * 下载JSON数据 */ public void downJSON(final String url){ executor.submit(new Runnable() { @Override public void run() { //在子线程中执行 byte[] bytes = HttpUtil.requestURL(url); if(bytes != null){ String json = new String(bytes); //解析JSON if(onDownListener != null){ final Object object = onDownListener.paresJson(json); //将解析的结果回传给主线程 handler.post(new Runnable() { @Override public void run() { //在主线程中执行 onDownListener.downSucc(object); } }); } } } }); } /** * 接口回调 */ public interface OnDownListener{ //解析JSON时回调 Object paresJson(String json); //解析完成后回调 void downSucc(Object object); }}3用法new DownUtil().setOnDownListener(上下文).downJSON(请求的url);重写以下两个方法@Override public Object paresJson(String json) {// 这里便是得到的json,你需要对其判断或者解析 Log.d("print", "onSuccess: -->" + json); return null; } @Override public void downSucc(Object object) {//回到主线程 }
新闻热点
疑难解答