安卓网络请求封装--Android-Async-Http

最近项目需要封装统一的网络请求,因为后台数据的返回不确定性,决定进行最基础的封装,统一返回String,gson解析自行处理。采用Android-Async-Http框架。

碰到的问题有:1、body要求为json而非表单形式,还有json+参数的请求体。2、Android-Async-Http框架未知原因闪退。

代码如下:

public class AsyHttpManger {

    private static AsyncHttpClient client = new AsyncHttpClient();

    /**
     * 捕捉所有异常,防止闪退
     */
    public static void get(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId) + "?" + params.toString());

        try {
            client.get(NetConfig.getUrl(apiId), params, responseHandler);
        } catch (Exception e) {
            LogMgr.error(e.getMessage());
        }
    }

   
    /**
     * 捕捉所有异常,防止闪退
     */
    public static void put(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId));
        try {
            client.put(NetConfig.getUrl(apiId), params, responseHandler);
        } catch (Exception e) {
            LogMgr.error(e.getMessage());
        }
    }

    /**
     * 捕捉所有异常,防止闪退
     */
    public static void post(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId) + "?" + params.toString());
        try {
            client.post(NetConfig.getUrl(apiId), params, responseHandler);
        } catch (Exception e) {
            LogMgr.error(e.getMessage());
        }
    }

    /**
     * 适用于需要传参数和json对象的接口
     * Post 异步请求
     * @param map 参数
     */
    public static void postJson(Context context, String apiId, Map<String, String> map, String jsonstring, AsyncHttpResponseHandler responseHandler) {
        try {
            String url = NetConfig.getUrl(apiId) + "?";
            for (String key : map.keySet()) {
                url = url + "&" + key + "=" + map.get(key);
            }
            LogMgr.error("============URL============" + apiId + ":" + url);
            LogMgr.error("jsonstring:" + jsonstring);
            //以ByteArrayEntity格式
            ByteArrayEntity entity = new ByteArrayEntity(jsonstring.getBytes("UTF-8"));
            client.post(context, url, entity, "application/json", responseHandler);
            //  client.post(context, url, stringEntity, "application/json;charset=UTF-8", responseHandler);
        } catch (Exception e) {
            LogMgr.error(e.getMessage());
        }
    }

   
    /**
     * 捕捉所有异常,防止闪退
     */
    public static void delete(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId));
        try {
            client.delete(NetConfig.getUrl(apiId), params, responseHandler);
        } catch (Exception e) {
            LogMgr.error(e.getMessage());
        }
    }

    /**
     * 取消asyhttp的所有请求
     */
    public static void cancel() {
        client.cancelAllRequests(true);
    }

    public static void setTimeout() {
        client.setTimeout(60000);
    }

}

调用代码:

RequestParams requestParams = new RequestParams();
requestParams.put("name", "abcd");


AsyHttpManger.get(NetConfig.A001, requestParams, new TextHttpResponseHandler() {
    @Override
    public void onFailure(int i, Header[] headers, String s, Throwable throwable) {
        LogMgr.info("A001:" + throwable.getMessage().toString());
    }

    @Override
    public void onSuccess(int i, Header[] headers, String s) {
        LogMgr.info("A001:" + s);
    }
});



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值