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()方法来进行线程转换

  • 相关阅读:
    POJ_1456 Supermarket 【并查集/贪心】
    CSS before和after伪类
    CSS anchor专为链接属性选择器
    CSS 属性选择器
    CSS float浮动
    CSS 外边距和内填充
    CSS 边框属性
    CSS 背景
    CSS 组和选择器
    CSS 引入方式
  • 原文地址:https://www.cnblogs.com/919czzl/p/6291152.html
Copyright © 2011-2022 走看看