web-dev-qa-db-ja.com

Jersey2クライアントのHTTPプロキシを追加する方法

Jersey1.xでクライアントのプロキシを設定するのは簡単です。

config.getProperties().put(ApacheHttpClientConfig.PROPERTY_PROXY_URI, proxyUrl);

しかし、Jersey2.xクライアントにhttpプロキシを追加する方法は?私はソースコードをチェックしましたが、実装がそれを行うことは見つかりませんでした:

org.glassfish.jersey.client.HttpUrlConnector

ありがとう!

17
feuyeux

ランタイムに別のプロキシを設定することは良い解決策ではありません。したがって、私は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); 
11
feuyeux

おかげで@ 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);

他人を助けたい

18
NGloom

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コネクタ自体の指示に従うことができると思います。

8
Lifecube

この解決策は私のために働いた

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 );

それが役に立てば幸い:)

4
Halayem Anis

インクルードなしの代替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");
  }
}
3
keshin