• android笔记20170116


    封装http请求类,利用回调机制获取返回值

    public interface HttpCallbackListener {
    
        void onFinish(String response);
        
        void onError(Exception e);
    }
    public class HttpUtil {
        public static void sendHttpRequest(final String address, final HttpCallbackListener listener){
            new Thread(new Runnable(){
    
                @Override
                public void run() {
                    HttpURLConnection connection = null;
                    
                    try {
                        URL url = new URL(address);
                        connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("GET");
                        connection.setConnectTimeout(8000);
                        connection.setReadTimeout(8000);
                        connection.setDoInput(true);
                        connection.setDoOutput(true);
                        InputStream in = connection.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                        StringBuilder response = new StringBuilder();
                        String line;
                        while((line = reader.readLine()) != null){
                            response.append(line);
                        }
                        if(listener != null){
                            listener.onFinish(response.toString());
                        }
                    } catch (Exception e) {
                        if(listener != null){
                            listener.onError(e);
                        }
                    } finally{
                        if(connection != null){
                            connection.disconnect();
                        }
                    }
                }
                
            }).start();
        }
    }

    使用方法:

    HttpUtil.sendHttpRequest("address", new HttpCallbackListener() {
                
                @Override
                public void onFinish(String response) {
                    
                }
                
                @Override
                public void onError(Exception e) {
                    
                }
            });

    需要注意的是,最终的回调接口还是在子线程中运行的,因此我们不可以在这里执行任何的UI操作,除非借助runOnUiThread()方法来进行线程转换

  • 相关阅读:
    canvas学习-----1px线条模糊问题
    canvas学习-----画直线
    关于开发的一些流程和个人理解
    vue+vue-cli+vuex+vrouter 开发学习和总结
    mac下配置Apache虚拟域名方案,以及遇到的坑
    添加js,css 版本号?v= hash
    webstorm 格式化代码及常用快捷键
    vue+webpack 遇到的问题总结
    vue.js的devtools安装
    Mongodb 新版配置文件详解
  • 原文地址:https://www.cnblogs.com/919czzl/p/6291152.html
Copyright © 2020-2023  润新知