处理在Retrofit中返回相同类型的多个请求

时间:2016-02-24 12:11:03

标签: android retrofit

我有一个像这样设置的片段:

public mFragment extends Fragment implements Callback<mType> {

    ...

@Override
public void onViewCreated(View v, Bundle sis) {
    Retrofit retrofit = new Retrofit.Builder().baseUrl("MYURL").addConverterFactory(GsonConverterFactory.create()).build();
    api mAPI = retrofit.create(api.class);
    Call<mType> call1 = mAPI.query1("query1"));
    Call<mType> call2 = mAPI.query2("query2"));
    call1.enqueue(this);
    call2.enqueue(this);
}

@Override
public void onFailure(Throwable t) {
    ...
}

@Override
public void onResponse(final Response<mType> response, Retrofit retrofit) {
    ...
}
}

我需要进行2次api调用,它们都返回相同的类型。但是,我想在不同的onResponse方法中处理它们,因为我需要对它们两者做不同的事情。这是在Retrofit 2.0下。 这是一个不同服务的API,因此我无权更改任何响应。

有没有办法指定Retrofit Call回拨的方法?我真的希望这有一个干净的解决方案,好像我使用两种不同的返回类型。如果最坏的情况发生,我可以复制对象并重命名,但我认为有一个&#34;正确的&#34;这样做的方法。

1 个答案:

答案 0 :(得分:2)

单独排队您的请求。因此,对于两个请求,您的响应侦听器将是独立的

call1.enqueue(new Callback<String>() {
    @Override
    public void onResponse(Response<String> response) {
    }

    @Override
    public void onFailure(Throwable t) {
    }
});

call2.enqueue(new Callback<String>() {
    @Override
    public void onResponse(Response<String> response) {
    }

    @Override
    public void onFailure(Throwable t) {
    }
});