在Java 8 JAX-RS RESTEasy客户端上使用Web代理

时间:2015-03-14 00:45:40

标签: eclipse jax-rs resteasy http-proxy

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

我在localhost192.168.1.123:3128设置了一个FreeProxy服务器。我打开登录并telnet到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客户端使用代理,我该怎么做?

2 个答案:

答案 0 :(得分:10)

ResteasyClientBuilder提供了一种定义defaultProxy的方法:

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

答案 1 :(得分:1)

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

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