zoukankan      html  css  js  c++  java
  • 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()方法来进行线程转换

  • 相关阅读:
    Redis 和 Memcached 的区别
    缓存详解
    HTTP常见状态码
    ORM的概念, ORM到底是什么
    remote: Unauthorized fatal: Authentication failed for...
    TR、FN、FP、FN
    <笔记>ue破解
    <笔记>bmp图片数据格式
    三轴加速度数据处理
    智能手环+三轴加速度传感器总结
  • 原文地址:https://www.cnblogs.com/919czzl/p/6291152.html
Copyright © 2011-2022 走看看