Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过预先存在的套接字路由Http(s)URL连接_Java_Sockets_Http_Ssl_Apache Httpclient 4.x - Fatal编程技术网

Java 通过预先存在的套接字路由Http(s)URL连接

Java 通过预先存在的套接字路由Http(s)URL连接,java,sockets,http,ssl,apache-httpclient-4.x,Java,Sockets,Http,Ssl,Apache Httpclient 4.x,我花了几个小时研究javax.net和sun.net的SSL实现以及apachehttpclient 4.3ssl处理(默认情况下使用javax.net工具作为其核心),但进展甚微,令人沮丧。我正试图通过先前创建的输入/输出流对来自HttpsURLConnection的流量进行隧道传输,以便能够访问HTTP java.net实用程序,同时能够通过我自己的流发送数据。我最初认为我可以通过使用这些输入/输出流的SocketImpl的自定义套接字实例恶意路由HttpsURLConnection,但似乎

我花了几个小时研究javax.net和sun.net的SSL实现以及apachehttpclient 4.3ssl处理(默认情况下使用javax.net工具作为其核心),但进展甚微,令人沮丧。我正试图通过先前创建的输入/输出流对来自HttpsURLConnection的流量进行隧道传输,以便能够访问HTTP java.net实用程序,同时能够通过我自己的流发送数据。我最初认为我可以通过使用这些输入/输出流的SocketImpl的自定义套接字实例恶意路由HttpsURLConnection,但似乎我必须更改默认的HttpsURLConnection SSLFactory才能实现这一点,这是不可行的,因为应用程序是多线程的。我对其他库和黑客修复开放


我希望实现的最终目标是:Http(s)URLRequest(或支持SSL的等效Http功能)->我的自定义套接字->Internet

在我看来,您最好的选择是在每个相关的
HttpsURLConnection
实例上安装您自己的
SSLSocketFactory
。它可以创建一个
SSLSocket
实例,该实例将委托给一个真实的实例,但返回环绕委托流的流


如果出于某种原因需要访问密码文本,可以将其颠倒过来,并将自己的
Socket
提供给
SSLSocketFactory.createSocket(Socket…)

我用于创建Tor隧道,我需要发出一些HTTPS请求,所以它们必须通过兰花的Stream类进行隧道传输。我没有意识到我能够设置一个HttpsURLConnection实例的SSLSocketFactory!非常感谢。底层普通套接字似乎是在调用
SSLSocketFactory#createSocket
之前创建的。