Я пытаюсь использовать grp c в Android приложении
Важной частью кода является следующее:
private val managedChannel: ManagedChannel = ManagedChannelBuilder
.forTarget("misserverurl.com")
.build()
build.gradle с версией и зависимостями :
minSdkVersion 19
implementation "io.grpc:grpc-okhttp:1.26.0"
implementation "io.grpc:grpc-protobuf:1.26.0"
implementation "io.grpc:grpc-stub:1.26.0"
Протос выглядит нормально, и приложение работает без TLS ( .usePlaintext () )
Но я получаю эту ошибку:
java.lang.RuntimeException: TLS ALPN negotiation failed with protocols: [grpc-exp, h2]
Там, где кажется, что есть проблема с SSL рукопожатием .
Странная часть в том, что сервер работает с использованием BloomRCP с использованием TLS.
Я пытался использовать разные minSdkVersions, также используя разные версии io.grp c. * Lib и создавая пустое хранилище только с файлами прото и базовым кодом c, чтобы запустить его, но ничего, и добавив .connectionSpe c () также с другим CipherSuite.
Используя Wireshark, я мог видеть, что отправляемая мной версия TLS - 1.2, которая является правильной и ожидаемой (возможно, она не использует HTTP2?)
Любой гость? Заранее спасибо!
---------------------------------------- ----------- Редактировать -------------------------------------- -------------
Посмотрите в lib я нашел этот метод: useTransportSecurity ()
/**
* Sets the negotiation type for the HTTP/2 connection to TLS (this is the default).
...
*/
@Override
public final OkHttpChannelBuilder useTransportSecurity() { ... }
Мы по умолчанию используется TLS с HTTP / 2, так что это не проблема ...