开源异步请求框架AndroidHttpClient的使用简介

  1. Asynchronous Http Client for Android
    Android异步Http请求
    项目地址:https://github.com/loopj/android-async-http
    文档介绍:http://loopj.com/android-async-http/
    特点:(1) 在匿名回调中处理请求结果
    (2) 在UI线程外进行http请求
    (3) 文件断点上传
    (4) 智能重试
    (5) 默认gzip压缩
    (6) 支持解析成Json格式
    (7) 可将Cookies持久化到SharedPreferences




package com.cattsoft.deliersystem.net;



import java.util.HashMap;
import java.util.Map;


import org.json.JSONException;
import org.json.JSONObject;


import cn.trinea.android.common.util.StringUtils;


import com.cattsoft.deliersystem.constants.Constant;
import com.cattsoft.deliersystem.util.Tools;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;


/**
 * http异步请求工具类,使用的是第三方的类库 <br>
 * 通过回调的形式获取数据 <br>
 * <br>
 * 返回状态码为 "200 OK"时调用<br>
 * onSuccess(int statusCode, Header[] headers, JSONObject response) <br>
 * <br>
 * 返回状态码为"4XX" (eg. 401, 403, 404)时调用<br>
 * onFailure(int statusCode, Header[] headers, String responseString, Throwable
 * throwable) <br>
 * <br>
 * 返回主体为空时调用此方法(网络连接不可用)<br>
 * onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject
 * errorResponse)
 * 
 * @author 肖秋
 * 
 */
public class HttpClient implements Constant {

//官方推荐写成静态的
private static AsyncHttpClient client = new AsyncHttpClient();


static {
client.setTimeout(TIME_OUT);
}


public static void get(String token, String url, RequestParams params,
AsyncHttpResponseHandler responseHandler) {
if (!StringUtils.isBlank(token)) {
client.addHeader(TOKEN, token);
}
client.get(getAbsoluteUrl(url), params, responseHandler);
Tools.Log(getAbsoluteUrl(url));
}


public static void post(String token, String url, RequestParams params,
AsyncHttpResponseHandler responseHandler) {
if (!StringUtils.isBlank(token)) {
client.addHeader(TOKEN, token);
}
client.post(getAbsoluteUrl(url), params, responseHandler);
Tools.Log(getAbsoluteUrl(url));
}


private static String getAbsoluteUrl(String relativeUrl) {
return HOST_URL + relativeUrl;
}


public static Map<String, String> analyticResult(JSONObject response) {
Map<String, String> map = new HashMap<>();
try {
String code = response.getString("result_code");
String data = response.getString("data");
map.put(CODE, code);
map.put(DATA, data);
} catch (JSONException e) {
e.printStackTrace();
}
return map;
}

}


在代码中调用


Urls = this.getResources().getStringArray(R.array.homeRequestUrls);
String token = PreferencesUtils.getString(this, TOKEN);
HttpClient.get(token, Urls[index], null,
new JsonHttpResponseHandler(ENCODING) {
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONObject response) {
Tools.Log("响应正确");
analyticData(HttpClient.analyticResult(response), index);
}


@Override
public void onFailure(int statusCode, Header[] headers,
Throwable throwable, JSONObject errorResponse) {
Tools.Log("响应错误");
showStyle(1);
}
@Override
public void onFailure(int statusCode, Header[] headers,
Throwable throwable, JSONArray errorResponse) {
Tools.Log("无响应");
showStyle(1);
}
});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值