android笔记20170116

Posted 东湖小浪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()方法来进行线程转换

以上是关于android笔记20170116的主要内容,如果未能解决你的问题,请参考以下文章

Java每日一题20170116

20170116小测233

MySQL_截止昨日南京市所有在职业务员业绩排名-20170116

[李景山php]每天TP5-20170116|thinkphp5-Url.php-1

在片段中重新加载android视图

学习笔记:python3,代码片段(2017)