我似乎无法让JAX-RS客户端在Java 8上使用Web代理。我使用RESTEasy 3.0.10.Final,并在Windows 7 Professional上从Eclipse 4.4.2内部运行64位。
我在localhost
上192.168.1.123:3128
设置了一个FreeProxy服务器。我打开登录并telnet到192.168.1.123 3128并发出手册GET
。请求显示在日志中。
然后我启动我的Java应用程序,在系统属性中设置http.proxyHost=192.168.1.123
和http.proxyPort=3128
。 (我甚至在启动JVM时使用-D
尝试过它。)(请注意,我不希望localhost
problem发挥作用,因为我正在连接到实际的IP地址,而不是localhost
。)
我使用ClientBuilder.newBuilder().build()
创建一个JAX-RS客户端,并对资源执行GET
。 FreeProxy日志中没有显示任何内容。
为了让JAX-RS客户端使用代理,我该怎么做?
答案 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();