Witam.
Mam aplikajce na Androida która wysyła zapytania do serwera RESTfulowego który zwraca odpowiedzi. Zapytań jest aktualnie 10 (UserCreate, UserDelete, UserEdit itp.) i stale rośnie, do tego 10 odpowiedzi. Zapytania realizuje libką Retrofit. Mój problem polega na tym że musze tworzyć osobny obiekt wysyłający zapytania odbierający odpowedzi dla każdego typu zapytania. Czyli 10 obiektów, to strasznie nie wygodne przy edycji. Czy da sie zrobić jeden obiekt który obsługiwał by wszystkie zapytania ?
Oto przykład takiego obiektu dla zapytania UserLogout
import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.OkClient;
import retrofit.client.Response;
/**
* Created by Stanisław on 2015-07-09.
*/
public class LogoutInteractor implements Callback <UserLogoutResponse> {
private OnLogoutInteractorFinishedListener listener;
private UserLogoutRequest request;
public LogoutInteractor(OnLogoutInteractorFinishedListener listener, UserLogoutRequest request){
this.listener = listener;
this.request = request;
sendLogoutRequest();
}
private RestAdapter initRestAdapter() {
OkClient client = new OkClient();
RestAdapter restAdapter = new RestAdapter.Builder()
.setClient(client)
.setEndpoint("http://176.122.224.22:9999")
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
return restAdapter;
}
public void sendLogoutRequest(){
RestAdapter adapter = initRestAdapter();
adapter.create(RequestInterface.class).send(request, this);
/* Ta metoda jest zdefiniowana w osobnym interface, tutaj tylko pokazuje jak wygląda
* @POST("/user/UserLogout")
* void send(@Body UserLogoutRequest request, Callback<UserLogoutResponse> callback);
*/
}
@Override
public void success(UserLogoutResponse userLogoutResponse, Response response) {
listener.onNetworkSuccess(userLogoutResponse, response);
}
@Override
public void failure(RetrofitError error) {
listener.onNetworkFailure(error);
}
}
Ja to teraz robiłem tak że przekopiowywałem całą klase i tworzyłem nową zmieniając tylko UserLogoutResponse na np. UserCreateResponse. Wszytskie zapytania są wysyłane POSTem, Działa jak należy ale mało wygodne na dłuższą mete.