扩展OkHttp协议选择

时间:2017-03-28 10:23:05

标签: java okhttp okhttp3 http2

我正在尝试使用OkHttp为基于HTTP / 2的协议实现客户端。该协议基本上是一个通过自定义TCP协议的未加密的HTTP / 2-Prior-Knowledge流(是的,我知道它已损坏,不,我无法改变它)。

OkHttp3在使用TCP时似乎只支持HTTP / 2 Prior Knowledge,因此我构建了一个实现我的协议的自定义SSLSocketFactorySSLSocket。这是hacky但是工作正常,直到先前的知识要求开始。我的远程不支持HTTP / 1.1-> HTTP / 2升级,它需要先验知识,OkHttp似乎只通过TLS扩展支持,但协议选择代码is platform-dependent

有没有办法挂钩协议选择逻辑,不涉及重新实现OkHttp的一半或反映到OkHttp-或JDK-内部类?也许没有假TLS黑客?替换RealConnection看起来不太可行,因为okhttp不提供任何可以实现的ConnectionFactory

1 个答案:

答案 0 :(得分:1)

OkHttp只会通过HTTPS与ALPN进行HTTP / 2。由于您坚持使用自己的自定义协议,因此请考虑在位于自定义协议前面的HTTPS服务器上添加HTTP / 2。您可以使用nginx执行此操作吗?