代理设置在 Jersey ClientConfig 中不起作用
Proxy setting not working in Jersey ClientConfig
我正在尝试使用 Jersey 客户端在我的 java 代码中设置代理,但未设置代理。我浏览了 Jersey 文档并按照描述的方式实现了代码。我是泽西岛的新手,所以不确定我哪里出错了。
下面是代码。
@Override
@CircuitBreaker(name = "documentServiceCreateDocument", ignore = { NullPointerException.class, ArrayIndexOutOfBoundsException.class })
public String createDocument(String name, DocumentType docType, List<SourceData> sourceDatas) {
ClientConfig clientConfig = new ClientConfig().register(MultiPartFeature.class)
.register(ClientTransactionIdFilter.class)
.property(ClientProperties.READ_TIMEOUT, "30000")
.property(ClientProperties.CONNECT_TIMEOUT, "30000")
.property(ClientProperties.PROXY_URI, properties.getProxyUrl);
Client client = ClientBuilder.newClient(clientConfig);
Builder builder = resourceTarget.request().header("Authorization", ***);
List<Cookie> iamCookies = ***
Response response = null;
try {
response = builder.post(body);
} catch (Exception e){
if(response != null) {
logger.info("Response code : " + response.getStatus());
logger.info("Response : " + response.toString());
}
e.printStackTrace();
throw new RuntimeException(e);
}
String docLocation = response.getLocation().toString();
logger.debug("Created Document Service document with location=" + docLocation);
return docLocation;
}
折腾了半天,终于搞定了。我们需要使用 ApacheConnectorProvider 才能使代理工作。
将 ApacheConnectorProvider 添加到 ClientConfig,如下所示:
ClientConfig clientConfig = new ClientConfig().register(MultiPartFeature.class)
.register(ClientTransactionIdFilter.class)
.property(ClientProperties.READ_TIMEOUT, "30000")
.property(ClientProperties.CONNECT_TIMEOUT, "30000")
.connectorProvider(new ApacheConnectorProvider())
.property(ClientProperties.PROXY_URI, properties.getProxyUrl);
不要忘记将 jersey-apache-connector 依赖项添加到您的 pom 文件(如果您使用的是 maven)。请参阅下面的 link 了解 jersey-apache-connector 依赖项的详细信息:
https://mvnrepository.com/artifact/org.glassfish.jersey.connectors/jersey-apache-connector/2.6
我正在尝试使用 Jersey 客户端在我的 java 代码中设置代理,但未设置代理。我浏览了 Jersey 文档并按照描述的方式实现了代码。我是泽西岛的新手,所以不确定我哪里出错了。
下面是代码。
@Override
@CircuitBreaker(name = "documentServiceCreateDocument", ignore = { NullPointerException.class, ArrayIndexOutOfBoundsException.class })
public String createDocument(String name, DocumentType docType, List<SourceData> sourceDatas) {
ClientConfig clientConfig = new ClientConfig().register(MultiPartFeature.class)
.register(ClientTransactionIdFilter.class)
.property(ClientProperties.READ_TIMEOUT, "30000")
.property(ClientProperties.CONNECT_TIMEOUT, "30000")
.property(ClientProperties.PROXY_URI, properties.getProxyUrl);
Client client = ClientBuilder.newClient(clientConfig);
Builder builder = resourceTarget.request().header("Authorization", ***);
List<Cookie> iamCookies = ***
Response response = null;
try {
response = builder.post(body);
} catch (Exception e){
if(response != null) {
logger.info("Response code : " + response.getStatus());
logger.info("Response : " + response.toString());
}
e.printStackTrace();
throw new RuntimeException(e);
}
String docLocation = response.getLocation().toString();
logger.debug("Created Document Service document with location=" + docLocation);
return docLocation;
}
折腾了半天,终于搞定了。我们需要使用 ApacheConnectorProvider 才能使代理工作。
将 ApacheConnectorProvider 添加到 ClientConfig,如下所示:
ClientConfig clientConfig = new ClientConfig().register(MultiPartFeature.class)
.register(ClientTransactionIdFilter.class)
.property(ClientProperties.READ_TIMEOUT, "30000")
.property(ClientProperties.CONNECT_TIMEOUT, "30000")
.connectorProvider(new ApacheConnectorProvider())
.property(ClientProperties.PROXY_URI, properties.getProxyUrl);
不要忘记将 jersey-apache-connector 依赖项添加到您的 pom 文件(如果您使用的是 maven)。请参阅下面的 link 了解 jersey-apache-connector 依赖项的详细信息: https://mvnrepository.com/artifact/org.glassfish.jersey.connectors/jersey-apache-connector/2.6