Kotlin – Как установить время ожидания соединения с OkHttp Kotlin

я вижу это `

Как установить время ожидания подключения с помощью OkHttp

Но эта ссылка для языка Java (Android). Я хочу использовать язык kotlin... ` Я использую библиотеку OkHttp

 val client = OkHttpClient()

 val time = client.connectTimeoutMillis() // it's get only methood but i looking for method for set Timeout

и моя проблема в том, что я не могу найти, как установить тайм-аут соединения и тайм-аут сокета для Kotlin.


person yahya    schedule 05.01.2018    source источник
comment
Возможный дубликат Как установить время ожидания соединения с OkHttp   -  person andrei_zaitcev    schedule 06.01.2018
comment
Вы должны сделать то же самое. Kotlin мало чем отличается в этом аспекте от Java. Просто вызовите OkHttp.Builder, настройте его с необходимыми тайм-аутами и создайте объект. Код должен быть таким же, как для Java.   -  person andrei_zaitcev    schedule 06.01.2018
comment
Я знаю ... но эта ссылка для java (android). Я хочу для Android kotlin language   -  person yahya    schedule 06.01.2018
comment
val test = OkHttp.Builder ..... но не метод проверки для установленного времени ожидания   -  person yahya    schedule 06.01.2018
comment
Язык в данном случае не имеет значения. Просто сделайте val client = OkHttp.Builder().connectionTimeout(10, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS).build()   -  person andrei_zaitcev    schedule 06.01.2018
comment
@andrei_zaitcev Я не знаю, как использовать (Builder). Спасибо за помощь. ваше решение работает для меня   -  person yahya    schedule 06.01.2018
comment
Проблема с вопросом, который вы связали, заключается не в том, что это Java, и вы используете Kotlin, а в том, что принятый ответ предназначен для OkHttp2, но другие ответы для OkHttp3   -  person msrd0    schedule 06.01.2018


Ответы (2)


Требуется Builder, доступных сеттеров нет. С OkHttp 3.9.1 вы можете сделать это:

val client = OkHttpClient.Builder()
    .connectTimeout(10, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .build()
person s1m0nw1    schedule 05.01.2018

Не сильно отличается от принятого ответа, но, похоже, лучше всего вернуть тот же OkHttpClient, чтобы избежать утечек памяти.

sealed class ClientBuilder {

    companion object {
        val plainClient: OkHttpClient by lazy {
             OkHttpClient
                .Builder()
                .connectTimeout(5, TimeUnit.SECONDS)
                .readTimeout(3, TimeUnit.SECONDS)
                .writeTimeout(3, TimeUnit.SECONDS)
                .build()
        }
    }

    fun client() : OkHttpClient {
        return plainClient
    }
}
person Alex Nolasco    schedule 14.05.2019