2015-01-07 10 views
10

2つのエンドポイントを切り替えるRestAdapterを作成する方法を知りたいと思います。現在私のアプリケーションでは、RestAdapterはApplicationクラス(シングルトン)で作成されています。私は実際に複数のRestAdapterを作成せずに異なるエンドポイントを持つ方法を探しています。Retrofit - 同じRestAdapterを持つ複数のエンドポイント

答えて

5

要求ごとにエンドポイントが呼び出されます。アルゴリズムをオンにしたい場合は、独自に実装することができます(ラウンドロビンなど)。それ以外の場合は、単一のRestAdapterがエンドポイントに結びついています。メソッドごとに制御することはできません。 - Jake Wharton

私は私のアプリで使用するさまざまなエンドポイントのための異なる残りのアダプタを作成しました。

8

レトロフィット1はいくつかのセッターでRetrofit.Endpointを拡張し、あなたがRestAdapterを作成するときに、このエンドポイントを渡す必要があるあなたに、各要求(キャッシュなし)のためのエンドポイントを呼び出します。

Endpoint mDynamicEndpoint = new DynamicEndpoint("http://firstdomain.fr"); 
RestAdapter restAdapter = new RestAdapter.Builder() 
    .setEndpoint(mDynamicEndpoint) 
    .build(); 

mDynamicEndpoint.setBaseUrl("http://yourdomain.com"); 

可能な重複:Dynamic Paths in Retrofit

0

エンドポイントからRestAdapterへのマップがあります。各ドメインごとに1つのアダプターを使います。多くのエンドポイントがある場合は素晴らしいソリューションではありません。

上記のDynamicEndpointソリューションは、異なるエンドポイントへの2つのリクエストが同時に発生した場合、競合状態につながる可能性があると考えています。

関連する問題