我有AsyncTask和doInBackground方法,我在其中使用Retrofit发送POST请求。我的代码如下:
//method of AsyncTask
protected Boolean doInBackground(Void... params) {
Retrofit restAdapter = new Retrofit.Builder()
.baseUrl(Constants.ROOT_API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
IConstructSecureAPI service = restAdapter.create(IConstructSecureAPI.class);
//request
Call<JsonElement> result = service.getToken("TestUser", "pass", "password");
result.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
}
@Override
public void onFailure(Call<JsonElement> call, Throwable t) {
}
});
return true;
}
我的问题如下:异步发送请求并在执行时,doInBackground方法返回值。所以我需要在同一个线程中发送一个请求,即序列中的所有执行。逐一。并且在请求完成后从doInBackground返回。如何使用Retrofit在同一个线程中发送请求?
答案 0 :(得分:13)
Call
班级有一个execute()
方法可以同步拨打电话。
enqueue()
明确用于进行异步调用。
答案 1 :(得分:0)
&#34;异步发送请求&#34;正如@Tanis.7x所提到的,enqueue()正在进行异步,那么放入AsyncTask的原因是什么呢? (在异步中异步?)
您可以简单地将所有改进代码从AsyncTask中删除,而onResponse
是等待您的请求调用返回的回调,因此您可以在此回调中进行任何UI更新。