123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package okhttp.request;
- import java.io.IOException;
- import java.util.concurrent.TimeUnit;
- import okhttp.OkHttpUtils;
- import okhttp3.Call;
- import okhttp3.OkHttpClient;
- import okhttp3.Request;
- import okhttp3.Response;
- import okhttp.callback.Callback;
- /**
- * Created by zhy on 15/12/15.
- * 对OkHttpRequest的封装,对外提供更多的接口:cancel(),readTimeOut()...
- */
- public class RequestCall
- {
- private OkHttpRequest okHttpRequest;
- private Request request;
- private Call call;
- private long readTimeOut;
- private long writeTimeOut;
- private long connTimeOut;
- private OkHttpClient clone;
- public RequestCall(OkHttpRequest request)
- {
- this.okHttpRequest = request;
- }
- public RequestCall readTimeOut(long readTimeOut)
- {
- this.readTimeOut = readTimeOut;
- return this;
- }
- public RequestCall writeTimeOut(long writeTimeOut)
- {
- this.writeTimeOut = writeTimeOut;
- return this;
- }
- public RequestCall connTimeOut(long connTimeOut)
- {
- this.connTimeOut = connTimeOut;
- return this;
- }
- public Call buildCall(Callback callback)
- {
- request = generateRequest(callback);
- if (readTimeOut > 0 || writeTimeOut > 0 || connTimeOut > 0)
- {
- readTimeOut = readTimeOut > 0 ? readTimeOut : OkHttpUtils.DEFAULT_MILLISECONDS;
- writeTimeOut = writeTimeOut > 0 ? writeTimeOut : OkHttpUtils.DEFAULT_MILLISECONDS;
- connTimeOut = connTimeOut > 0 ? connTimeOut : OkHttpUtils.DEFAULT_MILLISECONDS;
- clone = OkHttpUtils.getInstance().getOkHttpClient().newBuilder()
- .readTimeout(readTimeOut, TimeUnit.MILLISECONDS)
- .writeTimeout(writeTimeOut, TimeUnit.MILLISECONDS)
- .connectTimeout(connTimeOut, TimeUnit.MILLISECONDS)
- .build();
- call = clone.newCall(request);
- } else
- {
- call = OkHttpUtils.getInstance().getOkHttpClient().newCall(request);
- }
- return call;
- }
- private Request generateRequest(Callback callback)
- {
- return okHttpRequest.generateRequest(callback);
- }
- public void execute(Callback callback)
- {
- buildCall(callback);
- if (callback != null)
- {
- callback.onBefore(request, getOkHttpRequest().getId());
- }
- OkHttpUtils.getInstance().execute(this, callback);
- }
- public Call getCall()
- {
- return call;
- }
- public Request getRequest()
- {
- return request;
- }
- public OkHttpRequest getOkHttpRequest()
- {
- return okHttpRequest;
- }
- public Response execute() throws IOException
- {
- buildCall(null);
- return call.execute();
- }
- public void cancel()
- {
- if (call != null)
- {
- call.cancel();
- }
- }
- }
|