VPN 开启时无法访问 REST 端点

Can't hit REST endpoint when VPN is on

我对网络有非常初级的了解。请ELI5

我有一些 Java 代码可以访问测试 REST 端点 (GET)。 https://postman-echo.com/get?foo1=bar1&foo2=bar2

当 运行 我的代码在我的本地环境中并且我关闭了公司 VPN 时,我能够无错误地访问该端点。

当我打开公司 VPN 时,我开始收到奇怪的错误,特别是 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

什么可能导致我的 java 代码在连接到 VPN 时中断?

更奇怪的是,当我在 VPN 开启的情况下在浏览器中输入端点时,我能够访问端点,因为一切正常。

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
                  .url("https://postman-echo.com/get?foo1=bar1&foo2=bar2")
                  .build();

try (Response response = client.newCall(request).execute()) {
    return response.body().string();
}

编辑

我可以访问两个代理,一个在我的浏览器中使用生成了 400 错误,另一个在我的代码中工作。为什么在使用 VPN 时需要代理以及我的 2 个代理之间有什么不同,为什么一个会在我的代码中生成 400 而另一个不会?

我坚信您需要通过代理进行呼叫,因为这是在公司网络中发生的。由于浏览器使用 VPN 设置进行 HTTP/HTTPS 调用,因此浏览器中不会出现此问题。在代码中添加代理设置即可解决问题。