有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    对于缓存请求和非缓存请求,您可以像下面这样初始化改型

    用于缓存

        public static Retrofit initializeRetrofit(Context mContext) {
            OkHttpClient client = new OkHttpClient();
            final File baseDir = mContext.getCacheDir();
            if (baseDir != null) {
                final File cacheDir = new File(baseDir, "HttpResponseCache");
                client.setCache(new Cache(cacheDir, 10 * 1024 * 1024));
            }
    
            //Setting time out for okHTTP
            client.setConnectTimeout(60, TimeUnit.SECONDS); // connect timeout
            client.setReadTimeout(60, TimeUnit.SECONDS);
            client.setRetryOnConnectionFailure(true);
    
            /**
             * For Logging in retrofit
             */
            HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            client.interceptors().add(interceptor);
    
            return new Retrofit.Builder()
                    .baseUrl(Constants.baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(client)
                    .build();
        }
    

    用于非缓存

        public static Retrofit initializeRetrofitWithoutCache(Context mContext) {
            OkHttpClient client = new OkHttpClient();
    
            //Setting time out for okHTTP
            client.setConnectTimeout(60, TimeUnit.SECONDS); // connect timeout
            client.setReadTimeout(60, TimeUnit.SECONDS);
            client.setRetryOnConnectionFailure(true);
    
            /**
             * For Logging in retrofit
             */
            HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            client.interceptors().add(interceptor);
    
            return new Retrofit.Builder()
                    .baseUrl(Constants.baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(client)
                    .build();
        }
    

    在进行网络调用之前,使用这些函数初始化Retrofit,请按照api调用函数中的要求使用这些函数

    您可以这样做来调用您的改装

    用于缓存调用

    Call<ResponseBody> call = initializeRetrofit()
                    .create(RetrofitInterface.class)
                    .yourFunction(params...);
    

    用于不带缓存的呼叫

    Call<ResponseBody> call = initializeRetrofitWithoutCache()
                    .create(RetrofitInterface.class)
                    .yourFunction(params...);
    

    您还可以在其上构建一个包装器,您可以在其中定义路由,并使用一个标志来检查是否需要缓存