我正在嘗試使用OkHttp實現基於HTTP/2的協議的客戶端。該協議基本上是一個通過自定義TCP協議的未加密的HTTP/2-Prior-Knowledge流(是的,我知道它已經壞了,不,我不能改變它)。擴展OkHttp協議選擇
OkHttp3似乎只支持使用TCP的HTTP/2預先知識,所以我建立了一個自定義的SSLSocketFactory
和SSLSocket
來實現我的協議。這是hacky,但工作正常,直到事先知識需求開始。我的遠程不支持HTTP/1.1-> HTTP/2升級,它需要事先的知識,OkHttp似乎只支持通過TLS擴展,但協議選擇代碼is platform-dependent 。
有什麼辦法可以掛鉤協議選擇邏輯,它不涉及重新實現OkHttp的一半或反映到OkHttp或JDK內部的類中?也許即使沒有假的TLS黑客?替換RealConnection
看起來不太可行,因爲okhttp沒有提供您可以實現的任何種類的ConnectionFactory
。