您的位置:首页 > 理论基础 > 计算机网络

android-async-http简单封装--笔记

2016-05-26 15:07 801 查看
android-async-http简单封装--笔记
我封装的的是我常用到的,至于上传与下载,以后有需求写了再更新

github: https://github.com/loopj/android-async-http

compile 'com.loopj.android:android-async-http:1.4.9'


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

1、封装:

package com.czz.testhttp;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import cz.msebera.android.httpclient.Header;

/**
* Created by czz on 2016/5/26.
*/
public class TAsyBastClient {

public interface DealS {
public void success(String result);
}

public interface DealE {
public void error(String result);
}

public interface DealFinal {
public void d_final();
}

private static AsyncHttpClient client = new AsyncHttpClient();

public static void get(String url, RequestParams params, AsyncHttpResultDeal asyncHttpResultDeal) {
client.get(url, params, asyncHttpResultDeal);
}

public static void post(String url, RequestParams params, AsyncHttpResultDeal asyncHttpResultDeal) {
client.post(url, params, asyncHttpResultDeal);
}

public static class AsyncHttpResultDeal extends AsyncHttpResponseHandler {
DealS ds;
DealE de;
DealFinal df;

/**
* @param ds 请求-成功处理
*/
public AsyncHttpResultDeal(DealS ds) {
this(ds, null);
}

/**
* @param ds 请求-成功处理
* @param de 请求-失败处理
*/
public AsyncHttpResultDeal(DealS ds, DealE de) {
this(ds, de, null);
}

/**
* @param ds 请求-成功处理
* @param de 请求-失败处理
* @param df 请求-最终处理,比如不管请求成功还是失败都要关闭Dialog
*/
public AsyncHttpResultDeal(DealS ds, DealE de, DealFinal df) {
this.ds = ds;
this.de = de;
this.df = df;
}

//请求开始
@Override
public void onStart() {
super.onStart();
}

//请求成功 HTTP statusCode:200 ok
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if (ds != null) {
if (responseBody != null && responseBody.length > 0) {
String result = new String(responseBody);
ds.success(result);
}
}
if (df != null) {
df.d_final();
}
}

//请求失败 HTTP statusCode:4XX (eg. 401, 403, 404)
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
if (de != null) {
if (responseBody != null && responseBody.length > 0) {
String result = new String(responseBody);
de.error(result);
}
}
if (df != null) {
df.d_final();
}
}

//重试
@Override
public void onRetry(int retryNo) {
super.onRetry(retryNo);
}
}
}


2、调用:

public void getData() {
TAsyBastClient.get(url,null,new TAsyBastClient.AsyncHttpResultDeal(new TAsyBastClient.DealS() {
@Override
public void success(String result) {
Log.e("czz","success get -- " + result);
}
},null,null));
}

public void postData() {
RequestParams params = new RequestParams();
params.put("userid", "10497");
params.put("startindex", "1");
params.put("pagenum", "10");
TAsyBastClient.post(purl,params,new TAsyBastClient.AsyncHttpResultDeal(new TAsyBastClient.DealS() {
@Override
public void success(String result) {
Log.e("czz","success post -- " + result);
}
}));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android async http