Okhttp - 2同步请求方法和3异步请求方法

接下来我们来看下OkHttpClient的一个静态内部类Builder。调用这个Builder方法就是为了所有的对象创建。

public Builder() {
      /**
       * 核心之一,分发器类,会接收到同步、异步的请求队列,
       * 根据它所要的条件,来进行相应的同步、异步请求的分发。
       */
      dispatcher = new Dispatcher();
      //
      protocols = DEFAULT_PROTOCOLS;
      connectionSpecs = DEFAULT_CONNECTION_SPECS;
      eventListenerFactory = EventListener.factory(EventListener.NONE);
      proxySelector = ProxySelector.getDefault();
      cookieJar = CookieJar.NO_COOKIES;
      socketFactory = SocketFactory.getDefault();
      hostnameVerifier = OkHostnameVerifier.INSTANCE;
      certificatePinner = CertificatePinner.DEFAULT;
      proxyAuthenticator = Authenticator.NONE;
      authenticator = Authenticator.NONE;
      connectionPool = new ConnectionPool();
      dns = Dns.SYSTEM;
      followSslRedirects = true;
      followRedirects = true;
      retryOnConnectionFailure = true;
      connectTimeout = 10_000;
      readTimeout = 10_000;
      writeTimeout = 10_000;
      pingInterval = 0;
    }
OkHttp同步方法总结
1)创建OkHttpClient和Request对象(两者均使用到了build设计模式)。
2)将Request封装成Call对象。
3)调用Call的execute()发送同步请求。
OkHttp同步需要注意

1)发送请求后,就会进入阻塞状态,直到收到响应。


以下是异步请求操作:


当调用这个enqueue这个放的时候,它会去开启一个新的工作线程,然后这个网络请求回去这个新的线程(子线程)去执行,

当异步请求成功之后,它会回调Callback对象的onResponse这个方法,在这个onResponse里面会进行相应成功数据的处理。

OkHttp异步方法总结
1)创建OkHttpClient和Request对象(两者均使用到了build设计模式)。
2)将Request封装成Call对象。
3)调用Call的enqueue()进行异步请求。
OkHttp异步需要注意
1)onResponse和onFailure都是在子线程去执行的。
同步 和 异步 的区别
1)发起请求的方法调用。
2)阻塞线程是否。同步会,异步不会,它会开启一个新的线程。





猜你喜欢

转载自blog.csdn.net/androidsj/article/details/79984458