我有一个像这样设置的片段:
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;这样做的方法。
答案 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) {
}
});