Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android-async-http二次封裝和調用

android-async-http二次封裝和調用

編輯:關於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 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 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 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 params=new HashMap();
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));

}

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved