我正在尝试使用OkHttp为基于HTTP/2的协议实现一个客户端。该协议基本上是一个基于自定义TCP协议的未加密的HTTP/2先验知识流(是的,我知道它坏了,不,我不能更改它)。
在使用OkHttp3时,似乎只支持HTTP/2先验知识,所以我构建了一个自定义的SSLSocketFactory和SSLSocket来实现我的协议。这有点老生常谈,但在先验知识要求生效之前,一切都很好。我的遥控器不支持HTTP/1.1->HTTP/2升级,它需要事先知道,而OkHttp似乎只通过TLS扩展支持,但协议选择代码is platform-dependent。
有没有办法连接到协议选择逻辑,而不涉及重新实现一半的OkHttp或反映到OkHttp-或JDK-内部类?也许即使没有假TLS黑客?替换RealConnection看起来并不可行,因为okhttp不提供任何您可以实现的ConnectionFactory。
发布于 2017-03-28 23:53:08
OkHttp将只使用ALPN在HTTPS上执行HTTP/2。由于您坚持使用您自己的自定义协议,因此请考虑在您的自定义协议之前添加一个基于HTTPS的HTTP/2服务器。你也许可以用nginx做到这一点?
https://stackoverflow.com/questions/43067002
复制相似问题