码迷,mamicode.com
首页 > 移动开发 > 详细

android-async-http二次封装和调用

时间:2015-08-14 19:16:55      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:android 网络请求框架

Android  android-async-http二次封装和调用

在开发过程中,网络请求这块的使我们经常遇到的一个问题,今天去github 网站上面学习android-async-http,觉得还是不错的  使用起来也比较简便   网络请求框架是一个不错的选择   方便大家一起共同讨论   QQ群:160373684
/**
 * 
 * @类描述: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;
/**
* 定义一个异步网络客户端 默认超时未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 class InternetUtil {
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;
}


在activity中直接调用   代码如下:

mAsyncHttpHelper=AndroidAsyncHttpHelper.getInstance();
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 网络请求框架

原文地址:http://blog.csdn.net/wangliang198901/article/details/47664555

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!