android-async-http二次封装和调用
* @类描写叙述:android-async-http 进行封装的类
* @项目名称:
* @包名:
* @类名称:AndroidAsyncHttpHelper
* @创建人:John
* @创建时间:2015年8月14日上午10:51:03
* @改动人:John
* @改动时间:2015年8月14日上午10:51:03
* @改动备注:
* @version v1.0
* @see [nothing]
* @bug [nothing]
*
*/
public class AndroidAsyncHttpHelper {
private static AndroidAsyncHttpHelper instance;
/**
* 定义一个异步网络client 默认超时未10秒 当超过,默认重连次数为5次 默认最大连接数为10个
*/
private static AsyncHttpClient client = new AsyncHttpClient();
static {
client.setTimeout(10000);//设置超时的时间
}
private AndroidAsyncHttpHelper() {
}
/**
* HTTP GET METHODs -- 存在异常或者请求超时情况下。回调返回值将是空字符串
*
* @param uri
* 请求的url
* @param callback
* 请求完毕后回调的方法
*/
public void get(Context context, String url,
final AsyncHttpResponseHandler callback) {
httpRequest(context, url, null, callback, EHttpMethod.GET);
}
public void get(Context context, String url, Map<String, Object> params,
final AsyncHttpResponseHandler callback) {
httpRequest(context, url, params, callback, EHttpMethod.GET);
}
/**
* HTTP POST METHODs -- 存在异常或者请求超时情况下,回调返回值将是空字符串
*
* @param uri
* 请求的url
* @param callback
* 请求完毕后回调的方法
*/
public void post(Context context, String url,
final AsyncHttpResponseHandler callback) {
httpRequest(context, url, null, callback, EHttpMethod.POST);
}
public void post(Context context, String url, Map<String, Object> params,
final AsyncHttpResponseHandler callback) {
httpRequest(context, url, params, callback, EHttpMethod.POST);
}
/**
*
* @描写叙述:构建一个单例类
* @方法名: getInstance
* @return
* @返回类型 AndroidAsyncHttpHelper
* @创建人 John
* @创建时间 2015年8月14日上午10:52:21
* @改动人 John
* @改动时间 2015年8月14日上午10:52:21
* @改动备注
* @since
* @throws
*/
public static AndroidAsyncHttpHelper getInstance() {
if (null == instance) {
synchronized (AndroidAsyncHttpHelper.class) {
if (null == instance) {
instance = new AndroidAsyncHttpHelper();
}
}
}
return instance;
}
private void httpRequest(Context context, String url,
Map<String, Object> params,
final AsyncHttpResponseHandler callback, EHttpMethod method) {
/* 推断网络状态 */
if (!InternetUtil.isNetWorking(context)) {
String str = "暂无网络";
callback.sendFailureMessage(40, null, str.getBytes(), null);
return;
}
/* 得到请求參数 */
RequestParams requestParams = new RequestParams();
if (null != params && params.size() > 0) {
for (String key : params.keySet()) {
requestParams.put(key, params.get(key));
}
}
switch (method) {
case GET:
client.get(context, url, requestParams, callback);
break;
case POST:
client.post(context, url, requestParams, callback);
break;
default:
break;
}
}
/**
*
* @类描写叙述:请求的类型
* @项目名称:
* @包名:
* @类名称:EHttpMethod
* @创建人:John
* @创建时间:2015年8月14日上午10:55:44
* @改动人:John
* @改动时间:2015年8月14日上午10:55:44
* @改动备注:
* @version v1.0
* @see [nothing]
* @bug [nothing]
*
*/
public enum EHttpMethod {
GET, POST
}
/**
*
* @类描写叙述:请求处理的类型
* @项目名称
* @包名:
* @类名称:EResponseHandlerType
* @创建人:John
* @创建时间:2015年8月14日上午10:56:09
* @改动人:John
* @改动时间:2015年8月14日上午10:56:09
* @改动备注:
* @version v1.0
* @see [nothing]
* @bug [nothing]
*
*/
public enum EResponseHandlerType {
Text, Json
}
public static boolean isNetWorking(final Context context)
{
boolean flag = checkNet(context);
if (!flag)
{
Toast.makeText(context, "应用当前处于离线操作状态", Toast.LENGTH_SHORT).show();
}
return flag;
}
/**
*
* @描写叙述:推断是否有网络连接
* @方法名: checkNet
* @param context
* @return
* @返回类型 boolean
* @创建人 John
* @创建时间 2015年8月14日上午10:59:54
* @改动人 John
* @改动时间 2015年8月14日上午10:59:54
* @改动备注
* @since
* @throws
*/
private static boolean checkNet(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager
.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
}
/**
*
* @param context
* @return 推断WIFI网络是否可用
*/
public boolean isWifiConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWiFiNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWiFiNetworkInfo != null) {
return mWiFiNetworkInfo.isAvailable();
}
}
return false;
}
/**
*
* @param context
* @return 推断MOBILE网络是否可用
*/
public boolean isMobileConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mMobileNetworkInfo != null) {
return mMobileNetworkInfo.isAvailable();
}
}
return false;
}
/**
*
* @param context
* @return 获取当前网络连接的类型信息
*/
public static int getConnectedType(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager
.getActiveNetworkInfo();
if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {
return mNetworkInfo.getType();
}
}
return -1;
}
Map<String,Object> params=new HashMap<String,Object>();
params.put("username","wangliang");
params.put("password","123456");
params.put("registId","123456");
mAsyncHttpHelper.post(this,HttpURL.LOGOIN, params, new AsyncHttpResponseHandler()
{
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
System.out.println("失败:"+arg0);
}
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
System.out.println("成功:"+arg0);
System.out.println(new String(arg2));
}
android-async-http二次封装和调用的更多相关文章
- 社会化登录分享-Android SDK的二次封装和使用
本系列文章将第三方的登录分享功能进行二次封装,统一接口调用,简化了接不同平台登录分享的步骤. 0 系列文章 系列一 Android SDK的二次封装和使用 系列二 源码解析 系列三 微信SDK接入 系 ...
- 代码二次封装-xUtils(android)
通常我们会引用很多lib 而且会出现lib 与我们的功能仅仅差一点点 这种情况我们最好不要去改动源代码 而是进行二次封装 举例我使用 xUtils的二次封装 此处说明我是搞ios的 这个是androi ...
- Android 应用程序集成Google 登录及二次封装
谷歌登录API: https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...
- Android 应用程序集成FaceBook 登录及二次封装
1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台 https://developers.facebook.com/ap ...
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.i ...
- android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件
网络请求是全部App都不可缺少的功能,假设每次开发都重写一次网络请求或者将曾经的代码拷贝到新的App中,不是非常合理,出于此目的,我希望将整个网络请求框架独立出来,与业务逻辑分隔开,这样就能够避免每次 ...
- 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步
深入理解MVC MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache
虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或 ...
随机推荐
- vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效
点击编辑按钮: 编辑状态下,表格可以编辑.但是点击“确认”或者“取消”按钮,列数据编辑状态已经修改,但是视图没有改变. 页面代码: 获取当前行的index,并直接修改当前行用于判断是否编辑状态的数据为 ...
- noip复习之拓扑排序
之前很多很多紫书上的东西我都忘了…… 抄题解的后果…… 做了一下裸题 https://vjudge.net/problem/UVA-10305 拓扑排序还可以来判环 #include<bits/ ...
- php 中引入邮箱服务 , 利用第三方的smtp邮件服务
项目中用短信通知有时间限制,对一些频率比较大的信息力不从心. 使用邮箱发送信息是个不错的选择\(^o^)/! 首先要注册一个邮箱,在邮箱设置里开通smtp功能. 简单介绍下smtp,大概就是第三方客户 ...
- jquery在文本框之后添加红*
var addHtml="<span class='text_red'>*</span>";function req(re){ if(re.parent(& ...
- 实战:percona-xtrabackup 2.1.9 for mysql 5.6.19
----1.编译安装percona-xtrabackup yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr ...
- nyoj--1023--还是回文(动态规划)
还是回文 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描述 判断回文串很简单,把字符串变成回文串也不难.现在我们增加点难度,给出一串字符(全部是小写字母) ...
- JavaScript学习——使用JS完成全选和全不选操作
1.我们希望在后台系统实现一个批量删除的操作(全选所有的复选框)和全不选,显示效果如下: 2.步骤分析: 第一步:确定事件(onclick)并为其绑定一个函数(事件绑定到编号前面的复选框里面) 第二步 ...
- 【原创】JMS生产者和消费者【PTP异步接收消息】
PTP模式下,异步接收消息需要定义一个MessageListener来监听,当生产者有消息要发送时会主动通知Listener去处理该消息,会调用监听的onMessage方法去处理. 首先看生产者(和同 ...
- js邮箱,汉字,数字 表单验证
//电子邮箱验证 function isEmail(str) { var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_ ...
- swift语言点评十六-Initialization && Deinitialization
initial value:必须初始化.不影响观察者 Classes and structures must set all of their stored properties to an appr ...