首页 > 学院 > 开发设计 > 正文

(原创)分享一个自己封装的HttpURLConnection网络请求框架

2019-11-06 09:43:08
字体:
来源:转载
供稿:网友

这个框架是自己闲来无事封装的,主要用于请求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) {//回到主线程    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表