【发布时间】:2017-08-21 09:01:58
【问题描述】:
我正在尝试使用 OkHttp 为基于 HTTP/2 的协议实现客户端。该协议基本上是基于自定义 TCP 协议的未加密 HTTP/2-Prior-Knowledge 流(是的,我知道它已损坏,不,我无法更改它)。
OkHttp3 在使用 TCP 时似乎只支持 HTTP/2 Prior Knowledge,所以我构建了一个自定义的 SSLSocketFactory 和 SSLSocket 来实现我的协议。这很hacky,但在先验知识要求开始之前可以正常工作。我的遥控器不支持HTTP/1.1->HTTP/2升级,它需要先验知识,OkHttp似乎只通过TLS扩展支持,但协议选择代码@ 987654321@.
有什么方法可以挂钩协议选择逻辑而不涉及重新实现一半的 OkHttp 或反映到 OkHttp 或 JDK 内部类?也许即使没有假 TLS 黑客?替换 RealConnection 看起来不可行,因为 okhttp 不提供任何可以实现的 ConnectionFactory。
【问题讨论】: