改造:如何等待回应

时间:2016-02-25 22:00:02

标签: java android retrofit

我有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在同一个线程中发送请求?

2 个答案:

答案 0 :(得分:13)

Call班级有一个execute()方法可以同步拨打电话。

enqueue()明确用于进行异步调用。

答案 1 :(得分:0)

&#34;异步发送请求&#34;正如@Tanis.7x所提到的,enqueue()正在进行异步,那么放入AsyncTask的原因是什么呢? (在异步中异步?)

您可以简单地将所有改进代码从AsyncTask中删除,而onResponse是等待您的请求调用返回的回调,因此您可以在此回调中进行任何UI更新。