Как установить имя потока в клиенте OkHttp - PullRequest
0 голосов
/ 11 июня 2019

Я использую OkHttp v3.14.2 в моем приложении. В следующей конфигурации я мог видеть, как имена потоков используют заданный мной URL. Есть ли способ установить пользовательское имя для потоков, используемых клиентом OkHttp для вызова веб-запросов?

Моя текущая реализация использует следующий код для создания экземпляра OkHttp

private static OkHttpClient initializeOkHttpClient() {
    final ConnectionPool pool = new ConnectionPool(5, 15, TimeUnit.SECONDS);

    final ConnectionSpec cs = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
            .tlsVersions(TlsVersion.TLS_1_2)
            .build();

    return new OkHttpClient.Builder()
            .connectionSpecs(Arrays.asList(cs))
            .connectTimeout(20000, TimeUnit.MILLISECONDS)
            .readTimeout(20000, TimeUnit.MILLISECONDS)
            .connectionPool(pool)
            .retryOnConnectionFailure(true)
            .build()
    ;
}

В журнале я мог видеть OkHttp https://<url>/... в качестве имени потока.

1 Ответ

1 голос
/ 11 июня 2019

Я не думаю, что вы можете настроить имена потоков для синхронных запросов, но вы должны быть в состоянии сделать это для асинхронных запросов.Я дам вам общие шаги, а не построчную инструкцию.Вам необходимо создать пользовательский ThreadFactory, который затем может быть передан ExecutorService, который, в свою очередь, может быть передан Dispatcher, который затем может быть использован для построения клиента OkHttp.Удачи.

...