okhttp 源码学习(一)基本用法

本小节主要讲解okhttp基本用法

第一步 创建client

通常情况下,在我们的应用中OkHttpClient采用单例模式创建,这是因为每一个okhttp client都拥有自己的connection pool(连接池 )和thread pool(线程池),通过对他们的复用避免资源浪费从而减少内存开支。

创建client有两种方式:

  • 方式一:使用其构造方法
// The singleton HTTP client.
public final OkHttpClient client = new OkHttpClient();
  • 方式二:使用OkHttpClient的静态内部类Builder
// The singleton HTTP client.
public final OkHttpClient client = new OkHttpClient.Builder()
     .addInterceptor(new HttpLoggingInterceptor())
     .cache(new Cache(cacheDir, cacheSize))
     .build();

第二步 创建请求对象Request

  • Get请求:
Request request = new Request.Builder()
      .url(url)
      .build();
  • Post请求:
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
    .url(url)
    .post(body)
    .build();

第三步 对Request请求对象封装成Call对象

Call call = client.newCall(request);

第四步 发送请求

Okhttp支持同步和异步对请求

  • 同步请求
try {
    Response response = call.execute();
    System.out.println(response.body().string());
} catch (IOException e) {
    e.printStackTrace();
}
  • 异步请求
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        //注:该回调为子线程,不能之间进行UI更新操作,需要切换到UI线程
        System.out.println("Fail");
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        //注:该回调为子线程,不能之间进行UI更新操作,需要切换到UI线程
        System.out.println(response.body().string());

    }
});

小结

以上就是okhttp中基本使用流程,这里需要提醒大家的是,异步请求Callback方法并不是在UI线程。下一节,我们将正式开始源码的学习。

下一节okhttp 源码学习(二)基本流程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,957评论 19 139
  • OkHttp解析系列 OkHttp解析(一)从用法看清原理OkHttp解析(二)网络连接OkHttp解析(三)关于...
    Hohohong阅读 21,016评论 4 58
  • 参考Android网络请求心路历程Android Http接地气网络请求(HttpURLConnection) 一...
    合肥黑阅读 21,347评论 7 63
  • 这段时间老李的新公司要更换网络层,知道现在主流网络层的模式是RxJava+Retrofit+OKHttp,所以老李...
    隔壁老李头阅读 33,262评论 51 405
  • 想法很多,舞台很小。 很久了,都想写点东西,但是提笔忘字,所有的想法似乎都在打字的瞬间消失无踪,徒留憋闷。 想换工...
    Miss_rxf阅读 245评论 0 0