Jersey1.xでクライアントのプロキシを設定するのは簡単です。
config.getProperties().put(ApacheHttpClientConfig.PROPERTY_PROXY_URI, proxyUrl);
しかし、Jersey2.xクライアントにhttpプロキシを追加する方法は?私はソースコードをチェックしましたが、実装がそれを行うことは見つかりませんでした:
org.glassfish.jersey.client.HttpUrlConnector
ありがとう!
ランタイムに別のプロキシを設定することは良い解決策ではありません。したがって、私はApacheコネクタを使用してそうしました:
定義されたApacheコネクター依存関係を追加します。
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-Apache-connector</artifactId>
</dependency>
クライアントにApacheコネクタを追加する
config.property(ApacheClientProperties.PROXY_URI, proxyUrl);
Connector connector = new ApacheConnector(config);
config.connector(connector);
おかげで@ feuyeux、解決策は私のために機能します、ps、以下のコードはプロキシでhttp基本認証で機能します:
ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI, proxy);
config.property(ClientProperties.PROXY_USERNAME,user);
config.property(ClientProperties.PROXY_PASSWORD,pass);
Client client = JerseyClientBuilder.newClient(config);
他人を助けたい
Jersey 2.0のデフォルトのhttpコネクター(JDK Http(s)URLConnection)を使用する場合。次のようにプロキシを設定するだけです:
System.setProperty ("http.proxyHost", "proxy_server");
System.setProperty ("http.proxyPort", "proxy_port");
Httpコネクタの他の実装(Apache HTTPクライアントとGrizzly非同期クライアント)については、これまで試したことはありません。しかし、httpコネクタ自体の指示に従うことができると思います。
この解決策は私のために働いた
pom.xml
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-Apache-connector</artifactId>
<version>2.17</version>
</dependency>
Java
ClientConfig config = new ClientConfig();
config.property( ClientProperties.PROXY_URI, "http://_YOUR_URI_:_YOUR_PORT_" );
config.connectorProvider( new ApacheConnectorProvider() );
Client client = ClientBuilder.newClient( config );
それが役に立てば幸い:)
インクルードなしの代替jersey-Apache-connector
public class Sample {
public static void main(String[] args) {
// you can skip AUTH filter if not required
ClientConfig config = new ClientConfig(new SampleProxyAuthFilter());
config.connectorProvider(
new HttpUrlConnectorProvider().connectionFactory(new SampleConnectionFactory()));
Client client = ClientBuilder.newClient(config);
// there you go
}
}
class SampleConnectionFactory implements HttpUrlConnectorProvider.ConnectionFactory {
@Override
public HttpURLConnection getConnection(URL url) throws IOException {
return (HttpURLConnection) url
.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("Host", 8080)));
}
}
class SampleProxyAuthFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
requestContext.getHeaders().add("Proxy-Authorization", "authentication");
}
}