简单背景
Android Asynchronous Http Client官方主页:Android Asynchronous Http Client
发送异步http请求,在callbacks里处理回应(其他更多Features详见官方主页)。
官方推荐使用方法
1.创建一个静态的类
public class AsynchronousTest {
private static final String TAG = "AsynchronousTest";
private static final String BASE_URL="http://www.oschina.net/%s";
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get(String url, RequestParams params, AsyncHttpResponseHandler handler){
client.get(getAbsoluteUrl(url), params, handler);
Log.i(TAG, new StringBuilder("GET ").append(getAbsoluteUrl(url)).append("&")
.append(params).toString());
}
public static void get(String url, AsyncHttpResponseHandler handler){
client.get(getAbsoluteUrl(url), handler);
Log.i(TAG, new StringBuilder("GET ").append(getAbsoluteUrl(url)).toString());
}
public static void post(String partUrl, RequestParams params,
AsyncHttpResponseHandler handler) {
client.post(getAbsoluteUrl(partUrl), params, handler);
Log.i(TAG, new StringBuilder("POST ").append(getAbsoluteUrl(partUrl)).append("?")
.append(params).toString());
}
private static String getAbsoluteUrl(String relativeUrl) {
Log.i(TAG, "getAbsoluteUrl: "+ String.format(BASE_URL, relativeUrl));
return String.format(BASE_URL, relativeUrl);
}
}
2. 定义一个handler(回调里面定义的方法)
private AsyncHttpResponseHandler mHandler = new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.i(TAG, "onSuccess: " + new String(responseBody));
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.i(TAG, "onFailure: ");
}
}
3.调用定义的GET(POST)方法
RequestParams params = new RequestParams();
params.put("username", "myUserName");
params.put("pwd", "myPassWord");
params.put("keep_login", 1);
AsynchronousTest.get("action/api/login_validate", params, mHandler);