Retrofit&OkHttp-一次只能发送一个请求吗?

时间:2018-08-24 05:57:38

标签: android retrofit retrofit2 okhttp okhttp3

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

  
      
  1. 请求A已发送
  2.   
  3. 请求B等待,直到收到请求A的响应
  4.   
  5. 请求A成功或失败完成
  6.   
  7. 请求B已发送
  8.   

是否可以使用Retrofit和OkHttp库创建此类队列?

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

是的,您只需要调用函数或根据API的成功/失败结果发送请求

  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) {

        }
    });


}

答案 2 :(得分:1)

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

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