/**
* 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);
}
}
* 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);
}
}
本文详细介绍了OkHttp中Call接口的功能及其实现方法,包括同步和异步请求的执行方式、取消请求的方法以及如何判断请求是否已被执行或取消。同时探讨了Call接口的设计原理及其在实际开发中的应用。
201

被折叠的 条评论
为什么被折叠?



