使用Apache CXF 3和JAX-RS 2.0添加客户端代理

时间:2015-12-10 11:10:13

标签: java rest proxy jax-rs cxf

我尝试在 Apache CXF 3 客户端API中添加代理。

ClientBuilder.newClient().target(serverUri)
                         .request()
                         .post();

使用Jersey实现我使用ClientConfig:

ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI, proxyAddress);
ClientBuilder.newClient(config) ...

我想在没有使用特定客户端的情况下使用CXF 3做同样的事情(我使用JAX-RS客户端实现)而不是在JVM上设置代理。

任何帮助都会受到影响;)

编辑:

解决方案的开始可以是:

client.property("http.proxy.server.uri", proxyUri); 
client.property("http.proxy.server.port",proxyPort); 

但我没有找到代理身份验证的属性。

1 个答案:

答案 0 :(得分:4)

您不使用JAX-RS客户端,它只是一个界面,请参阅JAX-RS API。实现是Apache CXF客户端,请参阅JAX-RS 2.0 Client API

  

CXF 3.0.0实现了JAX-RS 2.0客户端API。在内部,它是根据CXF特定的WebClient实现的。

您可以使用Apache CXF客户端配置,请参阅Apache CXF API

  

表示当前代理或WebClient的配置。给定名为“client”的实例,可以使用WebClient.getConfig(客户端)调用访问其配置。

示例:

Client client = ClientBuilder.newClient();
HTTPConduit conduit = WebClient.getConfig(client).getHttpConduit();

HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setProxyServer("my.proxy.domain");
policy.setProxyServerPort(80);
conduit.setClient(policy);

ProxyAuthorizationPolicy policy = new ProxyAuthorizationPolicy();
policy.setAuthorizationType("Basic");
policy.setUserName(PROXY_USER);
policy.setPassword(PROXY_PWD);
conduit.setProxyAuthorization(policy);