Goodbye Apache-HttpClient, Hello OkHttpClient

Android 从 M 开始取消支持 Apache-HttpClient,对于一直喜欢使用 android-async-http 的我来说,得换网络框架了,好麻烦啊!虽然官方推荐使用 HttpURLConnection,但 OkHttpClient 更好嘛。以前也试用过 OkHttpClient ,但总会有些或多或少的问题,没敢正式使用。现在 OkHttpClient 都 2.5.0 了, 更加稳定,是时候该用上了。

为了兼容以前 android-async-http 的使用习惯和特性,写了个模块包装一下OkHttpClient,用起来同样轻松愉快 :

OkHttpManager

  1. post/get 需要支持同步、异步请求,共用一套Callback.
  2. RequestParams 可以添加各种类型参数、File、Stream.
  3. 可以添加CookieStore

哦,对了关于Callback仅仅只有最基本的 BaseCallback , 什么都没实现。毕竟 Callback 处理的事情可多了,比如要实现一个 JsonCallback ,fastjson/Gson各种库爱怎么用怎么用,还可以同时在 Callback 的异步线程里解析好,甚至可能还得根据自家 Api 的返回信息判断请求成功失败等,这可没法封装,得根据具体需要自己写。我觉得像 android-async-http 里面提供一堆不同的 HttpResponseHandler 看着很强大,实际没有什么用嘛。

Demo 里通过继承 BaseCallback,实现了一个简单的 StringCallback 。如果是异步的,通过 Handler 将结果提交到主线程处理。同步的就直接 run~

RequestParams params = new RequestParams();  
params.put("q", "fly me to the moon");

OkHttpClientManager.get("http://api.douban.com/v2/music/search", params,  
        new StringCallback() {
            @Override public void onFailure(int statusCode) {
                Toast.makeText(MainActivity.this, "Error code =" + statusCode,
                        Toast.LENGTH_SHORT).show();
            }

            @Override public void onSuccess(String response) {
                mResultTextView.setText(response);
            }
        });

Author

Relex

Android Developer