Retrofit & OkHttp - 是否可以一次只发送一个请求?
Retrofit & OkHttp - Is it possible to send only one request at a time?
我正在使用 Retrofit 2.4.0 向服务器发送请求。但有时服务器会阻止我的请求,如果它与另一个请求具有相似的毫秒时间戳。我需要一次发送一个请求:
- Request A is sent
- Request B waits until the response for Request A received
- Request A completes with success or error
- 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 AsyncTank
和 onPostExecute()
。你可以在得到请求A的响应后调用你的请求B。
我觉得没有必要使用 Retrofit 或 OkHttp 库。当您同时发送多个请求时,这些库很有用。
我决定使用 Dispatcher 的 setMaxRequests 方法一次发送一个请求:
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(1);
OkHttpClient client = new OkHttpClient.Builder()
.dispatcher(dispatcher)
.build()
我正在使用 Retrofit 2.4.0 向服务器发送请求。但有时服务器会阻止我的请求,如果它与另一个请求具有相似的毫秒时间戳。我需要一次发送一个请求:
- Request A is sent
- Request B waits until the response for Request A received
- Request A completes with success or error
- 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 AsyncTank
和 onPostExecute()
。你可以在得到请求A的响应后调用你的请求B。
我觉得没有必要使用 Retrofit 或 OkHttp 库。当您同时发送多个请求时,这些库很有用。
我决定使用 Dispatcher 的 setMaxRequests 方法一次发送一个请求:
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(1);
OkHttpClient client = new OkHttpClient.Builder()
.dispatcher(dispatcher)
.build()