Retrofit & OkHttp - 是否可以一次只发送一个请求?

Retrofit & OkHttp - Is it possible to send only one request at a time?

我正在使用 Retrofit 2.4.0 向服务器发送请求。但有时服务器会阻止我的请求,如果它与另一个请求具有相似的毫秒时间戳。我需要一次发送一个请求:

  1. Request A is sent
  2. Request B waits until the response for Request A received
  3. Request A completes with success or error
  4. Request B is sent

是否可以使用 Retrofit 和 OkHttp 库创建这样的队列?

是的,您只需要在 API

的 success/failure 结果上调用函数或发送请求
  private void firstRequest() {


    Call<LoginModel> call= apiInterface.getLogin("");
    call.enqueue(new Callback<LoginModel>() {
        @Override
        public void onResponse(Call<LoginModel> call, Response<LoginModel> response) {
            //function here

        }

        @Override
        public void onFailure(Call<LoginModel> call, Throwable t) {

        }
    });


}

根据您的要求,您可以简单地使用 Android AsyncTankonPostExecute()。你可以在得到请求A的响应后调用你的请求B。

我觉得没有必要使用 Retrofit 或 OkHttp 库。当您同时发送多个请求时,这些库很有用。

我决定使用 Dispatcher 的 setMaxRequests 方法一次发送一个请求:

Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(1);

OkHttpClient client = new OkHttpClient.Builder()
                .dispatcher(dispatcher)
                .build()