AsyncTask 的 get post 封装
1.get方法的封装AsyncTask
public class DBUTil2 {
public static interface Succee{
void onSuccee(String result);
}
public static interface Fail{
void onFail();
}
public static void getDataByGetInterface(final Map map, final Succee successCallback,
final Fail failCallback){
new AsyncTask<Void,Void,String>(){ @Override protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s!=null){
if(successCallback!=null){
successCallback.onSuccee(s);
}
}else{
if(failCallback!=null){
failCallback.onFail();
}
}
}
@Override
protected String doInBackground(Void... voids) {
String s = null;
try {
URL url = new URL((String) map.get("url"));
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
InputStream in=conn.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(in));
s= bufferedReader.readLine();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
}.execute();
}
}
2.post方法的封装方法
public class DBUTil2 {
public static interface Succee{
void onSuccee(String result);
}
public static interface Fail{
void onFail();
}
public static void post(final Map map,final Succee succee ,final Fail fail ){
new AsyncTask<Void,Void,String>(){
@Override
protected void onPostExecute(String s) {
if (s!=null){
if (succee!=null){
succee.onSuccee(s);
}else {
if (fail!=null){
fail.onFail();
}
}
}
super.onPostExecute(s);
}
@Override
protected String doInBackground(Void... voids) {
String s = null;
String json = null;
OutputStream outputStream = null;
InputStream inputStream = null;
BufferedReader bufferedReader = null;
try {
URL url = new URL((String) map.get("url"));
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.setUseCaches(false);
connection.setDoOutput(true);
outputStream = connection.getOutputStream();
JSONObject jsonObject = new JSONObject("jsonobject");
outputStream.write(jsonObject.toString().getBytes());
if (connection.getResponseCode()==200){
inputStream = connection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
while ((s=bufferedReader.readLine())!=null){
json+=s;
}
inputStream.close();
bufferedReader.close();
outputStream.flush();
outputStream.close();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return json.substring(4,json.length());
}
}.execute();
}
AsyncTask 的 get post 封装的更多相关文章
- AsyncTask函数化的封装,AsyncTask函数式的调用
AsyncTask在本专栏已经做过详细的解析,但是AsyncTask函数式的调用这个概念对大多数人来说比较陌生.其实本质就是自己封装AsyncTask,让暴露的方法,看不到一点AsyncTask的身影 ...
- Android AsyncTask运作原理和源码分析
自10年大量看源码后,很少看了,抽时间把最新的源码看看! public abstract class AsyncTask<Params, Progress, Result> { p ...
- Android(java)学习笔记149:Android线程形态之 AsyncTask (异步任务)
1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点 AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...
- android线程与线程池-----AsyncTask(一)《android开发艺术与探索》
线程在android是个重要的概念,从用途上讲,线程分为主线程和子线程,主线程负责页面相关,子线程负责耗时操作. 在android中除了Thread本身还有 AsyncTask IntentServ ...
- Android查缺补漏(线程篇)-- AsyncTask的使用及原理详细分析
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8515304.html 一.AsyncTask的使用 AsyncTask是一种轻 ...
- 你知道RxJava也可以实现AsyncTask吗?
使用RxJava实现异步操作(AsyncTask) 常见的异步操作我们可以联想到AsyncTask或者handler,其实google创造出的目的也就是为了让代码更加清晰明了,让代码更加简洁. 而Rx ...
- Android(java)学习笔记92:Android线程形态之 AsyncTask (异步任务)
1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点 AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...
- 安卓多线程——AsyncTask
在采集视频的同时需要对视频进行实时处理,因此要使用到多线程. AsyncTask是android提供的一个处理异步任务的框架,相当于Handler+Thread.相比而言,AsyncTask的优点是封 ...
- AsyncTask源码解读
AsyncTask源码解读 一.基本使用 protected void onPreExecute() protected abstract Result doInBackground(Params.. ...
随机推荐
- spring cloud 工程构建
https://blog.csdn.net/zhou199252/article/details/80745151 https://blog.csdn.net/forezp/article/detai ...
- [Leetcode]27. 移除元素
题目描述: ++难度:简单++ 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 ...
- re+正则01
# 正则 # 正则 ''' 正则就是带语法的字符串, 用来匹配目标字符串得到想要得字符串结果 ''' # 部分语法: # 1.单独字符 # \d 范围 [0-9] # \D 范围刨除 [^0-9] # ...
- 解决虚拟机centos7 无法无法上网问题
centos无法上网问题 虚拟机设置 网段设置 网关设置 查看本地电脑设置 登录服务器设置 /etc/sysconfig/network-scripts/ 下面的 ifcfg-ens33 文件操 ...
- Python_文件处理
1.Python 文件处理 打开文件---->读取内容---->获得内容 读取文件方式: r 只读文件 w 只写模式 a 追加模式 r+b 读写模式 w+b 写读模式 a+b ...
- 求助,我在安装SQL sever2016时遇到了这种情况
哪位大佬能告诉我这怎么解决?多谢!
- oracle 数据库中某个字段逗号分隔,得到对应列中的个数(列转行)实现方法
由于各种原因,数据的原则问题,导致某个字段上出现多个数据(依据分隔符隔开),比如 name 字段为 张三;李四;王五等等 需求:求一张表中name字段中出现的个数: 想要得到的结果为: 对应的sql语 ...
- java2周来的一些心得和体会
1.首先,在开发的一开始,可以将绝大多数rest可能提交过来字段先抽离出来,做成一个基础类. 然后再继承这个类,这样做的好处是业务就被分开了,谁也不会影响到谁. 2.在maven当中,需要修改自己的类 ...
- Zedboard搭建Linux嵌入式环境
ZYNQ是ARM硬核和PL软核的结合体,Xillybus官方为他开发了驱动套件Xillinux,赶快将开发板投入使用吧! 本随笔参考了众多博主和官方教程:(基本上就是把官方教程翻译了一遍,呵呵:)) ...
- Spark SQL / Catalyst 内部原理 与 RBO
原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/spark/rbo/ 本文所述内容均基于 2018年9月10日 Spark ...