将 Web 代理与 Java 8 个 JAX-RS RESTEasy 客户端一起使用

Using web proxy with Java 8 JAX-RS RESTEasy clients

我似乎无法让 JAX-RS 客户端在 Java 上使用 Web 代理 8。我在内部使用 RESTEasy 3.0.10.Final 和 运行 Windows 7 Professional 64 位上的 Eclipse 4.4.2。

我在 localhost 运行 192.168.1.123:3128 上设置了一个 FreeProxy 服务器。我打开日志并远程登录到 192.168.1.123 3128 并发布手册 GET。该请求显示在日志中。

然后我启动我的 Java 应用程序,在系统属性中设置 http.proxyHost=192.168.1.123http.proxyPort=3128。 (我什至在启动 JVM 时尝试使用 -D。)(请注意,我不希望 localhost problem 发挥作用,因为我正在连接到一个实际的 IP 地址,而不是至 localhost.)

我使用 ClientBuilder.newBuilder().build() 创建了一个 JAX-RS 客户端并对资源执行了 GET。 FreeProxy 日志中没有显示任何内容。

我需要做什么才能让 JAX-RS 客户端使用代理?

ResteasyClientBuilder提供了定义defaultProxy的方法:

ResteasyClient client = new ResteasyClientBuilder().defaultProxy("localhost", 8080, "http").build();

似乎可以通过使用 different engine 而不是 HttpClient 让 RESTeasy 使用 Java 的代理属性(例如 -Dhttp.proxyHost)。 java.net.HttpURLConnection 支持开箱即用的代理属性:

ResteasyClient client = new ResteasyClientBuilder().httpEngine(new URLConnectionEngine()).build();

对于 RESTEasy 4,这是我为此所做的:

ResteasyClient client = ((ResteasyClientBuilder) ClientBuilder.newBuilder())
    .defaultProxy(proxyHost, proxyPort)
    .build();

return client
    .target(ENDPOINT_URL)
    .proxy(EndpointResource.class);