2013-09-22 22 views
12

Es ist einfach, einen Proxy für Client auf Jersey1.x einzustellen:Wie man eine HTTP-Proxy für Jersey2 Client hinzufügen

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

Aber wie eine HTTP-Proxy für Jersey2.x Client hinzufügen? ich den Quellcode überprüft und hat nicht die Umsetzung finden, dass in:

org.glassfish.jersey.client.HttpUrlConnector

Dank!

Antwort

9

Um verschiedene Proxy auf Laufzeit festzulegen ist keine gute Lösung. Dementsprechend ich Apache-Anschluss verwendet, dies zu tun:

hinzufügen Apache Stecker Abhängigkeit definiert:

<dependency> 
<groupId>org.glassfish.jersey.connectors</groupId> 
<artifactId>jersey-apache-connector</artifactId> 
</dependency> 

hinzufügen Apache Connector Client

config.property(ApacheClientProperties.PROXY_URI, proxyUrl); 
Connector connector = new ApacheConnector(config); 
config.connector(connector); 
+5

Dies funktioniert nicht für Apache-Connector 2.17 – Dejell

6

Wenn Sie Trikot 2.0 Standard http-Connector (JDK Http (s) URLConnection) verwenden. Sie könnten nur einfach konfigurieren Sie die Proxy wie:

System.setProperty ("http.proxyHost", "proxy_server"); 
    System.setProperty ("http.proxyPort", "proxy_port"); 

Für andere Implementierungen von HTTP-Anschluss (Apache HTTP-Client und Grizzly Asynchronous Client), ich habe vor nicht versucht. Aber ich denke, dass Sie die Anweisung durch HTTP-Connector selbst folgen können.

+0

Dank zum Ihre Hilfe, ich denke, es sollte gute Lösung für einzelne Umgebung sein, aber wenn ich meinen Biz-Client abstrahieren muss, und der Proxy-Server ein Parameter ist, funktioniert es nicht in jeder Zeiteinstellung? Gibt es ein synchronisiertes Problem? – feuyeux

+0

können Sie eine Eigenschaftendatei verwenden, um die Parameter zu konfigurieren. oder Sie könnten -Dhttp.proxyHost = "proxy_server" und -Dhttp.proxyPort = "proxy_port" – Lifecube

+1

verwenden, um verschiedene Proxy auf Laufzeit festzulegen, ist keine gute Lösung. Dementsprechend habe ich Apache Verbinder so zu tun: org.glassfish.jersey.connectors Jersey-Apache-connector config.property (ApacheClientProperties.PROXY_URI, ProxyURL); Connector connector = neuer ApacheConnector (config); Konfig.Verbinder (Verbinder); – feuyeux

13

dank @feuyeux, die Lösung Arbeit für mich ist, ps, ​​unter dem Code funktioniert in der Proxy mit http Grunde auth:

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

hoffen, dass andere

0

Diese Lösung zu helfen, hat für mich gearbeitet

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

Hoffnung, das hilft :)