代码中的JGit代理配置

Ala*_*per 5 java proxy jgit

我能够在JGit中使用clone命令克隆repo

Repo是http,当然,当我落后于代理时,它无法克隆

您能帮我解决一下代码示例如何在java中使用代理配置JGit

谢谢!

Car*_*ini 8

JGit使用ProxySelectorHttp连接的标准机制.截至今天,org.eclipse.jgit.transport.TransportHttp.proxySelector框架使用的字段不可覆盖.但是,它是可配置的,可以自定义JVM默认代理选择器,如下所示:

ProxySelector.setDefault(new ProxySelector() {
    final ProxySelector delegate = ProxySelector.getDefault();

    @Override
    public List<Proxy> select(URI uri) {
            // Filter the URIs to be proxied
        if (uri.toString().contains("github")
                && uri.toString().contains("https")) {
            return Arrays.asList(new Proxy(Type.HTTP, InetSocketAddress
                    .createUnresolved("localhost", 3128)));
        }
        if (uri.toString().contains("github")
                && uri.toString().contains("http")) {
            return Arrays.asList(new Proxy(Type.HTTP, InetSocketAddress
                    .createUnresolved("localhost", 3129)));
        }
            // revert to the default behaviour
        return delegate == null ? Arrays.asList(Proxy.NO_PROXY)
                : delegate.select(uri);
    }

    @Override
    public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
        if (uri == null || sa == null || ioe == null) {
            throw new IllegalArgumentException(
                    "Arguments can't be null.");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)