OkHttp用法入门

okHttp是Square公司开源的一个高性能的网络请求框架,当然Square还贡献了很多好用的开源库https://github.com/square

先来看看okHttp的基本用法:

1.先创建OkHttpClient

// Okhttp 中使用的缓存cache其实最后还是使用的 DiskLruCache,通过Okhttp内部的线程池对缓存进行保存清除等操作的
    // 不缓存get方法的响应
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .cache(new Cache(new File("cache"),18*1024*1024))
            .readTimeout(5, TimeUnit.SECONDS).build();

2.创建Request对象

Request request = new Request.Builder()
                .url("http://www.baidu.com").get().build();

3.将Request封装成Call对象

 Call call = okHttpClient.newCall(request); // 实际的Http请求,可以当做request和response连接的桥梁

4.调用Call的execute()执行同步请求

try {
            Response response = call.execute(); // 执行同步请求
            System.out.println(response.body().toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

或者调用call.enqueue执行异步请求回调:

call.enqueue(new Callback() { // 执行异步请求回调
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

            }
        });

OkHttp同步方法特点:发送请求后,就会进入阻塞状态,直到收到响应。

从上面可以看出无论是同步还是异步都会走的共同路径:
1.创建OkHttpClient和Request对象
2.将Request封装成Call对象

OkHttp异步方法注意点:
异步回调中的两个回调方法onResponse和onFailure都是在子线程中执行的。
下一篇会在源码中详细说的,为什么是在子线程中执行的

异步和同步的不同点:
1.发起请求的方法调用
2.阻塞线程与否

image.png

可以看看上图理一下同步和异步。

OkHttp同步和异步的源码解读:https://www.jianshu.com/p/baf47f6f0e11

你可能感兴趣的:(OkHttp用法入门)