gpt4 book ai didi

android - Retrofit 2 如何多次发出同一个请求

转载 作者:可可西里 更新时间:2023-11-01 17:17:29 26 4
gpt4 key购买 nike

public void makeGetRequest() {


Retrofit.Builder builder = new Retrofit.Builder().baseUrl("https://desolate-beach-17272.herokuapp.com");
Retrofit retrofit = builder.build();


RetrofitInterface retrofitInterface = retrofit.create(RetrofitInterface.class);


Call<ResponseBody> call = retrofitInterface.downloadFileByUrl("downloadFile/beach.jpg");


call.enqueue(new Callback<ResponseBody>() {
@SuppressLint("StaticFieldLeak")

// returns the response if everything is okay
@Override
public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) {

try {
Log.d("Success" , " " + response.body().bytes().length);
} catch (IOException e) {
e.printStackTrace();
}
}


@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d("FAIL", "oops");

}
});

我有这段代码,它使用 async 方法向我的服务器发出 get request。我想要的是多次发出相同的请求。例如,我想发出 100 次 get request。如果可能,我不想使用可观察对象或其他外部库。有没有人可以帮我解决这个问题?

最佳答案

您可以多次调用,只需查看下面我为此目的使用方法的代码。在对从服务器获取的数据执行操作后的 onResponse 方法中,您可以通过使用变量 sizeOfCall 并递减它直到它等于零来再次调用同一 API。下面是它的完整代码。

public class RequestActivity extends AppCompatActivity {

int sizeOfCall = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_request);

callAPI();
}

private void callAPI(){
Retrofit.Builder builder = new Retrofit.Builder().baseUrl("https://desolate-beach-17272.herokuapp.com");
Retrofit retrofit = builder.build();
RetrofitInterface retrofitInterface = retrofit.create(RetrofitInterface.class);
Call<ResponseBody> call = retrofitInterface.downloadFileByUrl("downloadFile/beach.jpg");

// Call API
makeGetRequest(call);
}

private void makeGetRequest(Call<ResponseBody> call) {

call.enqueue(new Callback<ResponseBody>() {

@SuppressLint("StaticFieldLeak")

// returns the response if everything is okay
@Override
public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) {

try {
Log.d("Success", " " + response.body().bytes().length);
// Perform your operations here and call API againg after that
sizeOfCall--;
if (sizeOfCall > 0) {
callAPI();
} else {
// No more calls needed
}
} catch (IOException e) {
e.printStackTrace();
}
}


@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d("FAIL", "oops");

}
});
}
}

关于android - Retrofit 2 如何多次发出同一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54689233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com