Как проверить Http/2 через okhttp?

Okhttp по умолчанию использует протокол h2, если домен его поддерживает. Цель состоит в том, чтобы каким-то образом определить, что, если домен находится на h2, а okhttp по умолчанию настроен на h2, как разработчик может получить подтверждение того, что все вызовы мультиплексируются и проходят по одному TCP-соединению? Я попытался использовать CustomEventListener, как предложил Джесси Уилсон. Тем не менее, я не могу получить 100% подтверждение. Пытался получить информацию о подключении

```@Override
public void connectionAcquired(Call call, Connection connection) {
    logWithTime("connectionAcquired: " + connection);
}
```

Объект подключения дает Route адрес, порт, прокси, socketAddress, объединенный с cipherSuit и протоколом. Хотя протокол h2, как показано объектом соединения, я хочу знать, что соединения на самом деле мультиплексированы и проходят через одно соединение. Нет информации об идентификаторах соединений или чем-либо, что подтверждает то же самое. Пожалуйста, предложите. Пример журнала: [7 мс] connectionAcquired: Connection{http://api.hotstar.com:443 , proxy=ПРЯМОЙ адрес_хоста=http://api.hotstar.com/106.51.146.149:443 … cipherSuite=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 протокол=h2}


person Ashwini Kumar    schedule 25.11.2018    source источник


Ответы (1)


Попробуйте распечатать хэш-код идентификатора подключения. Если соединения разные, они будут иметь разные значения.

public void connectionAcquired(Call call, Connection connection) {
  logWithTime("connectionAcquired: " + System.identityHashCode(connection));
}
person Jesse Wilson    schedule 25.11.2018
comment
Спасибо, Джесс. Я думаю, что эта информация должна быть задокументирована где-то в официальном документе Okhttp. - person Ashwini Kumar; 26.11.2018
comment
Вот что это за вопрос StackOverflow! - person Jesse Wilson; 27.11.2018