首页 > 代码库 > android笔记20170116
android笔记20170116
封装http请求类,利用回调机制获取返回值
public interface HttpCallbackListener { void onFinish(String response); void one rror(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 one rror(Exception e) { } });
需要注意的是,最终的回调接口还是在子线程中运行的,因此我们不可以在这里执行任何的UI操作,除非借助runOnUiThread()方法来进行线程转换
android笔记20170116
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。