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.. ...
随机推荐
- unsigned long long类型与long long类型
最近做题的时候,经常遇到范围是2^63,取模2^64的这种题目.遇到这种限制条件时就要想到用unsigned long long类型. 可以简洁地声明为typedef unsigned long lo ...
- 解决Chrome浏览器访问https提示“您的连接不是私密连接”的问题
安装fiddler后,使用Chrome访问https网站时,可能会出现以下错误,本文说明如何解决此类问题: “您的连接不是私密连接”.“NET::ERR_CERT_AUTHORITY_INVALID” ...
- 分频器的Verilog实现
一.占空比50%的奇数分频 1.实现思路 实现奇数(N)分频,分别用上升沿计数到(N-1)/2,再计数到N-1:用下降沿计数到(N-1)/2,再计数到N-1,得到两个波形,然后把它们相或即可得到N分频 ...
- 三,用户交互方式与python基本数据类型
一.与用户交互 input python2中:用户输入什么类型的数据,就储存为什么类型的数据.比如输入数字则储存为整型,输入符号则存储为字符串型.raw_input会将所有输入的类型转换为字符串型. ...
- Python第八课学习
Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...
- MongoDB慢查询性能分析
最近,长期运营后的港台服出现一个问题,web充值很慢,用gm指令查询玩家信息也很慢.最后定位到MongoDB查询也很慢. 刚开始定位的时候,运营SA直接查指定的玩家,并反映很慢,就猜测是索引的问题 ...
- 通过for 来获取数组里面的电话
//存放的是电话号码包含的数字 , , , , , }; //电话号码出现的下标 , , , , , , , , , , }; //方式1 ; i < index.length; i++) { ...
- UNION ALL 心得
TABLE_A 表 UNION ALL TABLE_B 表 UNION 或者 UNION ALL 之后 1.字段长度 必须相同 (如A 10 个列,则B 也要10个列) 2.查询条件也要相同 (A ...
- 什么是混合app?
APP混合模式和原生模式的优劣 ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-06-27 每当你打算开发移动应用程序时,都要考虑你的应用如何创建以及如何部署 ...
- Scrum学习心得
一.Scrum学习心得: 最近简单的学习了一下scrum模式,感觉又开启了一个新世界的大门. 首先,scrum是一个应用于互联网研发的开发方式,这种开发方式的主要特点是快速迭代,持续交付. scrum ...