在Java中配置HTTPS代理

时间:2018-05-10 07:12:51

标签: java proxy

有没有办法使用java.net.Proxy类配置HTTPS代理? 我想使用来自Java客户端的HTTPS代理与HTTP目标进行通信。

提前致谢。

1 个答案:

答案 0 :(得分:0)

以下是如何以编程方式设置代理的简约示例:

SocketAddress a = new InetSocketAddress("proxy.example.com", 8080);
Proxy p = new Proxy(Proxy.Type.HTTP, a);
ProxySelector ps = new ProxySelector() {
    public List<Proxy> select(URI uri) { return Collections.singletonList(p); }
    public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {}
};
ProxySelector.setDefault(ps);

实际代码当然应该在connectFailed中做一些明智的事情,如果应用程序也将使用代理服务器不支持的其他方案,请检查select中的URI方案。在后一种情况下,它应该返回一个类型为Proxy.Type.DIRECT的Proxy实例,这将导致连接绕过代理。

我只使用了http和https网址,因此我不知道它是否适用于任何其他方案。对于https URL,代理服务器需要支持CONNECT方法。