일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Switch to the Play Referrer API by March 1
- deprecating the install_referrer
- andorid studio
- 하드코드검색
- android P
- hardcoded string search
- 안드로이드
- Retrofit2
- Rx자바
- RX
- java
- Android
- RxJava2
- RXjava
- rxandroid
Archives
- Today
- Total
Lucky Dog
[안드로이드] Retrofit2 Multiple base url 본문
Retrofit2 Multiple base url
Retrofit 에서 여러 개의 base url을 사용해야 하는 경우 아래와 같이 처리한다.
RetrofitManager
public class RetrofitManager {
private static final String TAG = RetrofitManager.class.getSimpleName();
private static HttpLoggingInterceptor logging =
new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY);
private static class LazyHolder {
static final RetrofitManager INSTANCE = new RetrofitManager();
}
private Server1Interface server1Interface;
private Server2Interface server2Interface;
public Server1Interface getServer1Interface(String url) {
OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder();
okHttpBuilder.addInterceptor(logging);
okHttpBuilder.connectTimeout(15, TimeUnit.SECONDS);
okHttpBuilder.readTimeout(15, TimeUnit.SECONDS);
okHttpBuilder.writeTimeout(15, TimeUnit.SECONDS);
okHttpBuilder.retryOnConnectionFailure(true);
OkHttpClient okHttpClient = okHttpBuilder.build();
server1Interface = new Retrofit.Builder()
.baseUrl(url)
.addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync())
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
.create(Server1Interface.class);
return server1Interface;
}
public Server2Interface getServer2Interface(String url) {
OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder();
okHttpBuilder.addInterceptor(logging);
okHttpBuilder.connectTimeout(30, TimeUnit.SECONDS);
okHttpBuilder.readTimeout(30, TimeUnit.SECONDS);
okHttpBuilder.writeTimeout(30, TimeUnit.SECONDS);
okHttpBuilder.retryOnConnectionFailure(true);
OkHttpClient okHttpClient = okHttpBuilder.build();
server2Interface = new Retrofit.Builder()
.baseUrl(url)
.addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync())
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
.create(Server2Interface.class);
return server2Interface;
}
public static RetrofitManager getInstance() {
return LazyHolder.INSTANCE;
}
}
Server1Interface
@POST("/a/alpha")
Observable<ResponseModel.Serv1Model> getData(@Body String body);
}
Server2Interface
@POST("/b/bravo")
Observable<ResponseModel.Serv2Model> getData(@Body String body);
}
USAGE
// Server 1
Server1Interface server1Interface = RetrofitManager.getInstance().getServer1Interface();
Observable<ResponseModel.Data1> observable = server1Interface.getData(param);
Disposable serv1Disposable = observable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(resp -> {
// response handling
},
e -> {
// error handling
}
);
// Server 2
Server2Interface server2Interface = RetrofitManager.getInstance().getServer2Interface();
Observable<ResponseModel.Data2> observable = server2Interface.getData(param);
Disposable serv2Disposable = observable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(resp -> {
// response handling
},
e -> {
// error handling
}
);
Comments