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.. ...
随机推荐
- c#线程池ThreadPool实例详解
1. 如何查看线程池的最大线程数和最小线程数 static void Main(string[] args) { Console.WriteLine("----------线程池开始,线程I ...
- Redis 攻击还原Linux提权入侵的相关说明
https://files.cnblogs.com/files/fudong071234/redis_crackit_v1.1%E2%80%94%E2%80%94redis%E6%94%BB%E5%8 ...
- 基于Openstack环境下开启SRIOV
主题思想: 先在系统层面修改配置文件,再去openstack里面修改配置文件 compute node系统层面: 先确认下是否含有ixgbe moudle lsmod |grep ixgbe 修改/e ...
- 服务器配置+wordpress建站(小白)
一. 安装好centos7.2系统后,登录centos系统输入如下命令: yum install -y wget && wget -O install.sh http://downlo ...
- java DOM
使用DOM解析XML文档的步骤 1.创建解析器工厂对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 2 ...
- 利用python执行shell脚本 并动态传参 及subprocess基本使用
最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 su ...
- jQuery-4.动画篇---动画基础隐藏和显示
jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...
- 云原生GIS技术
云原生架构概述 - DockOne.io http://dockone.io/article/2991 云原生GIS技术全解读 - SuperMap技术控 - CSDN博客 https://blo ...
- 文档资源搜索小工具 - 支持PDF,DOC,PPT,XLS
最近做了一个文档搜索小工具,当然不是网盘搜索工具,这个工具支持四种文件格式搜索(pdf,doc,ppt,xls),你只需要在搜索框中输入你想要搜索资源的关键词,点击搜索按钮即可获取相关资源,点击下载按 ...
- react native onEndReached频繁多次调用问题
今天被这个问题搞得头疼,写一个分页加载,但是listview的onEndReached方法老是被频繁调用,知道加载完所有的分页数据才停止. <ListView automaticallyAdju ...