我花了几个令人恼火的时间研究 javax.net 和 sun.net SSL 实现以及 Apache HttpClient 4.3 SSL 处理(默认情况下在其核心使用 javax.net 设施),但取得的进展却少得令人沮丧。我正在尝试通过先前创建的输入/输出流从 HttpsURLConnection 传输流量,以便能够访问 HTTP java.net 实用程序,同时能够通过我自己的流发送数据。我最初认为我可以通过带有使用这些输入/输出流的 SocketImpl 的自定义 Socket 实例来黑客式地路由 HttpsURLConnection,但看来我必须更改默认的 HttpsURLConnection SSLFactory 才能实现这一点,这对于应用程序来说是不可行的是多线程的。我愿意接受替代库和黑客修复!
我希望实现的最终目标:Http(s)URLRequest(或支持 SSL 的等效 HTTP 工具)-> 我的自定义套接字 -> Internet
最佳答案
在我看来,最好的选择是在每个相关的 HttpsURLConnection
实例上安装自己的 SSLSocketFactory
。它可以创建一个 >SSLSocket
实例委托(delegate)给真实的实例,但返回包裹在委托(delegate)流周围的流。
如果您出于某种原因需要访问密文,您可以将其颠倒过来,并将您自己的 Socket
提供给 SSLSocketFactory.createSocket(Socket, ...)
,
关于java - 通过预先存在的 Socket 路由 Http(s)URLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468366/