Okhttp代码走读之Call

/**
 * A call is a request that has been prepared for execution. A call can be canceled. As this object
 * represents a single request/response pair (stream), it cannot be executed twice.
 */


public interface Call extends Cloneable {
  // 返回初始化该Call的Request
  Request request();


  /**
同步执行Request,即立马执行,并且被阻塞,直到返回结果或者错误
1. 为了防止资源泄露,调用者必须释放ResponseBody或者Response
2. 若由于某些原因,如:超时、链接错误、网络原因等,会有异常:IOException
3. 若已经被执行了再次执行,则会报错IllegalStateException
4. 传输层的成功不代表应用层的成功,Response也有可能是404或500
  */
  Response execute() throws IOException;


  /**
异步执行Request
1. 由dispatcher来确定Request何时执行
2. 通过responseCallback来异步回调执行结果
3. 若已经被执行了再次执行,则会报错IllegalStateException
  */
  void enqueue(Callback responseCallback);


  void cancel(); // 取消Call,如果已经取消了,则无法再次取消


  // Call是否被执行了,包括:execute()和enqueue(); 


  boolean isExecuted(); // Call如果被执行两次会报错


  boolean isCanceled(); // 若Call被取消,则返回True


  Call clone(); // 克隆一个Call


  // 工厂接口,用于new一个call
  interface Factory {
    Call newCall(Request request);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值