HttpCall.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.benyanyi.okhttp.call;
  2. import android.content.Context;
  3. import com.benyanyi.okhttp.config.CallType;
  4. import com.benyanyi.okhttp.listener.OnOkHttpListener;
  5. import java.util.List;
  6. import okhttp3.Call;
  7. import okhttp3.OkHttpClient;
  8. import okhttp3.Request;
  9. /**
  10. * @author YanYi
  11. * @date 2019-08-02 22:23
  12. * @email ben@yanyi.red
  13. * @overview 数据请求
  14. */
  15. public class HttpCall implements RequestConfig {
  16. private CallBuilder builder;
  17. private HttpCall(Builder builder) {
  18. Call call = builder.httpClient.newCall(builder.request);
  19. this.builder = new CallBuilder()
  20. .setCache(builder.isCache)
  21. .setCacheName(builder.mCacheUrl)
  22. .setContext(builder.context)
  23. .setCall(call);
  24. }
  25. @Override
  26. public <T> void async(Class<T> tClass, OnOkHttpListener<T> onOkHttpListener) {
  27. this.builder.setCallType(CallType.ASYNC).builder(tClass).send(onOkHttpListener);
  28. }
  29. @Override
  30. public <T> void sync(Class<T> tClass, OnOkHttpListener<T> onOkHttpListener) {
  31. this.builder.setCallType(CallType.SYNC).builder(tClass).send(onOkHttpListener);
  32. }
  33. @Override
  34. public <T> void asyncList(Class<T> tClass, OnOkHttpListener<List<T>> onOkHttpListener) {
  35. this.builder.setCallType(CallType.ASYNC).listBuilder(tClass).send(onOkHttpListener);
  36. }
  37. @Override
  38. public <T> void syncList(Class<T> tClass, OnOkHttpListener<List<T>> onOkHttpListener) {
  39. this.builder.setCallType(CallType.SYNC).listBuilder(tClass).send(onOkHttpListener);
  40. }
  41. @Override
  42. public void async(OnOkHttpListener<Object> onOkHttpListener) {
  43. this.builder.setCallType(CallType.ASYNC).builder().send(onOkHttpListener);
  44. }
  45. @Override
  46. public void sync(OnOkHttpListener<Object> onOkHttpListener) {
  47. this.builder.setCallType(CallType.SYNC).builder().send(onOkHttpListener);
  48. }
  49. public static class Builder {
  50. private Context context;
  51. private String mCacheUrl;
  52. private Request request;
  53. private OkHttpClient httpClient;
  54. private boolean isCache;//是否需要缓存
  55. public Builder setContext(Context context) {
  56. this.context = context;
  57. return this;
  58. }
  59. public Builder setCacheUrl(String mCacheUrl) {
  60. this.mCacheUrl = mCacheUrl;
  61. return this;
  62. }
  63. public Builder setRequest(Request request) {
  64. this.request = request;
  65. return this;
  66. }
  67. public Builder setHttpClient(OkHttpClient httpClient) {
  68. this.httpClient = httpClient;
  69. return this;
  70. }
  71. public Builder setCache(boolean cache) {
  72. isCache = cache;
  73. return this;
  74. }
  75. public RequestConfig builder() {
  76. return new HttpCall(this);
  77. }
  78. }
  79. }