我正在使用Retrofit 2.4.0将请求发送到服务器。但是有时服务器会阻止我的请求,如果它的时间戳与另一个请求具有相似的毫秒数。我需要一次发送一个请求:
- 请求A已发送
- 请求B等待,直到收到请求A的响应
- 请求A成功或失败完成
- 请求B已发送
是否可以使用Retrofit和OkHttp库创建此类队列?
答案 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 AsyncTank
和onPostExecute()
。您可以在收到请求A的响应后调用请求B。
我觉得不需要使用Retrofit或OkHttp库。当您同时发送多个请求时,这些库很有用。