Kotlin + Retrofit + OkHttpでTimeoutを設定したい
表題のとおりで、Kotlin + Retrofit + OkHttpの環境でAPI接続する際に、インターネットに非接続状態(もしくはサーバーにトラブルがあった場合)でも設定したtimeoutの時間まで通信を行うようにしたいです。
OkHttpClientを下記のように設定したのですが、通信できない場合にすぐにエラーが表示されてしまいます。
fun builderHttpClient(access_token: String): OkHttpClient {
val client = OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.addInterceptor(BearerAuthenticationInterceptor(access_token))
return client.build()
}
fun getRetrofit(access_token: String): Retrofit {
val client = builderHttpClient(access_token)
val retrofit = Retrofit.Builder()
.baseUrl(Const.BASE_URL)
.client(client)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
return retrofit
}
val service = retrofit.create(sample::class.java)
service.api()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Subscriber<String>() {
override fun onNext(p0: String) {}
override fun onCompleted() {}
override fun onError(p0: Throwable) {}
}
)
}
java.net.UnknownHostException: Unable to resolve host "サーバー名": No address associated with hostname
ご教示いただければと思います。