

表題のとおりで、Kotlin + Retrofit +
OkHttpの環境でAPI接続する際に、インターネットに非接続状態（もしくはサーバーにトラブルがあった場合）でも設定したtimeoutの時間まで通信を行うようにしたいです。

OkHttpClientを下記のように設定したのですが、通信できない場合にすぐにエラーが表示されてしまいます。

[code]

    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) {}
        }
    )
    }
    
[/code]

> java.net.UnknownHostException: Unable to resolve host "サーバー名": No address
> associated with hostname

ご教示いただければと思います。


CC BY-SA 3.0
2017-09-15T08:29:54.573
37969
2017-09-19T01:45:04.710
2017-09-19T01:45:04.710
23195
23195
question
android android-studio kotlin retrofit
Kotlin + Retrofit + OkHttpでTimeoutを設定したい