/**
* 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);
}
}