Android 网络请求库:Android Asynchronous Http Client

jopen 9年前

Android Asynchronous Http Client一看名字就知道它是基于Http Client的,但是呢在安卓中Http Client已经废弃了,所以也不建议使用这个库了。然后仍然有一些可取的内容值得学习,所以这里也介绍一下。

特点

  • 所以请求在子线程中完成,请求回调在调用该请求的线程中完成
  • 使用线程池
  • 使用RequestParams类封装请求参数
  • 支持文件上传
  • 持久化cookie到SharedPreferences,个人感觉这一点也是这个库的重要特点,可以很方便的完成一些模拟登录
  • 支持json
  • 支持HTTP Basic Auth

用法

  • 编写一个静态的HttpClient
import com.loopj.android.http.AsyncHttpClient;  import com.loopj.android.http.AsyncHttpResponseHandler;  import com.loopj.android.http.RequestParams;    /**   * Created by lizhangqu on 2015/5/7.   */  public class TestClient {      private static final String BASE_URL = "http://121.41.119.107/";        private static AsyncHttpClient client = new AsyncHttpClient();        public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {          client.get(getAbsoluteUrl(url), params, responseHandler);      }        public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {          client.post(getAbsoluteUrl(url), params, responseHandler);      }        private static String getAbsoluteUrl(String relativeUrl) {          return BASE_URL + relativeUrl;      }  }

  • 调用get或者post方法

参数通过RequestParams传递,没有参数则传递null

RequestParams  params = new RequestParams();  params.put("","");

  • 如果要保存cookie,在发起请求之前调用以下代码
PersistentCookieStore myCookieStore = new PersistentCookieStore(this);  client.setCookieStore(myCookieStore);

之后请求所得到的cookie都会自动持久化

如果要自己添加cookie,则调用以下代码

BasicClientCookie newCookie = new BasicClientCookie("cookiesare", "awesome");  newCookie.setVersion(1);  newCookie.setDomain("mydomain.com");  newCookie.setPath("/");  myCookieStore.addCookie(newCookie);

使用
在回调函数中处理返回结果
private void get(){          TestClient.get("test/index.php", null, new AsyncHttpResponseHandler() {              @Override              public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {                }                @Override              public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {                }          });      }      private void post(){          RequestParams params = new RequestParams();          params.put("user","asas");          params.put("pass","12121");          params.put("time","1212121");          TestClient.post("test/login.php", params, new AsyncHttpResponseHandler() {              @Override              public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {                }                @Override              public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {                }          });      }

项目主页:http://www.open-open.com/lib/view/home/1435381683903