【问题标题】:Set custom socket implementation in HttpUrlConnection在 HttpUrlConnection 中设置自定义套接字实现
【发布时间】:2014-08-02 12:24:57
【问题描述】:

在这里寻找 java 网络专家 :)

我所在的团队正在开发一个解决方案,该解决方案由服务器部分和一个小型客户端 API(和 api-impl)捆绑包组成,我们的客户必须部署和使用这些捆绑包,以便向服务器部分发出 http 请求。

我们的一个使用 API 的客户要求我们为他提供一种设置自定义 Socket 实现的新方法,以便与服务器部分的实际 http 通信可以通过他的 Socket。到目前为止,我们使用 HttpsUrlConnection 连接到服务器部分。问题是 - 是否有可能以某种方式为 HttpsUrlConnection 提供自定义套接字实现而不是默认的?有哪些替代方案? Apache HttpClient 能做到这一点吗?

【问题讨论】:

    标签: java sockets networking httpurlconnection apache-httpclient-4.x


    【解决方案1】:

    可以在 HttpsUrlConnection 上 setSSLSocketFactory。这仅适用于 ssl 而不是“普通” HttpUrlConnection。

    【讨论】:

    • 在使用 .openConnection() 打开实际连接之前,我应该如何设置这个连接工厂?设置默认连接工厂不是一个选项,因为这会干扰软件的所有其他传出 http 连接
    • “openConnection”方法有点误导。它实际上并没有建立连接。当您开始将内容写入请求正文时,最早可能会发生这种情况(但即使这样,也只有在您设置分块或固定长度流模式时才会发生)。默认情况下,当您询问有关响应的某些内容(例如 InputStream 或响应代码)时,实际连接就会发生。
    • 好的,非常感谢!这正是我所希望的
    【解决方案2】:

    可以完全自定义 Apache HttpClient 实例化套接字并将它们连接到远程端点的方式,方法是使用 ConnectionSocketFactoryThis example 例如演示如何通过 SOCKS 代理连接到外部主机

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      相关资源
      最近更新 更多