Ответ 1
RestAdapter будет фактически консультироваться с EndPoint каждый раз, когда будет выполнен запрос. Это означает, что вы можете реализовать свой собственный и передать его в RestAdapter. Сохранение ссылки на него означает, что вы сможете изменить URL-адрес, когда вам нужно.
public final class FooEndpoint implements Endpoint {
private String url;
public void setUrl(String url) {
this.url = url;
}
@Override public String getName() {
return "default";
}
@Override public String getUrl() {
if (url == null) throw new IllegalStateException("url not set.");
return url;
}
}
Затем просто сделайте что-то вроде этого
FooEndPoint endPoint = new FooEndPoint();
// Keep a reference to this instance
endPoint.setUrl("url1");
RestAdapter.Builder builder = new RestAdapter.Builder();
builder.setEndpoint(endPoint);
SomeApi api = builder.build().create(SomeApi.class);
api.getSomeDataFromUrl1();
// when needed you can update the url
endPoint.setUrl("url2");
api.getSomeDataFromUrl2();