java - 代码中的 JGit 代理配置

标签 java proxy jgit

我可以在 JGit 中使用 clone 命令克隆 repo

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

你能帮我写代码示例如何在 java 中使用代理配置 JGit

谢谢!

最佳答案

JGit 使用标准的ProxySelector 机制来进行Http 连接。 从今天开始,框架使用的字段 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.");
        }
    }
});

关于java - 代码中的 JGit 代理配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16921374/

相关文章:

java - 任何人都有 AppScale 的经验?

java - 突变中不使用 GraphQL 变量

.net - 用于开发目的的数据库服务器

git - 如何将未更改的文件添加到 git 索引

java - JGIT:git 结账 --

java - 文件程序显示错误

Java URLDecoder 在与包含 % 的字符串一起使用时抛出异常

java - 为什么 @Validated + @Component + Implement 会在 Spring Boot 中导致类型误导性错误?

java - SOCKS v5请求发送当前用户而不是没有用户

java - 如何使用 Java 以编程方式在 GitHub 存储库中移动文件?