2013-09-22 8 views
12

यह Jersey1.x पर ग्राहक के लिए एक प्रॉक्सी सेट करना आसान है के लिए एक HTTP प्रॉक्सी जोड़ने के लिए:कैसे Jersey2 ग्राहक

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

लेकिन यह कैसे Jersey2.x ग्राहक के लिए एक HTTP प्रॉक्सी को जोड़ने के लिए? मैं स्रोत कोड की जाँच की और कार्यान्वयन नहीं मिला है कि में:

org.glassfish.jersey.client.HttpUrlConnector

धन्यवाद!

उत्तर

9

रनटाइम पर अलग प्रॉक्सी सेट करने के लिए अच्छा समाधान नहीं है। तदनुसार, मैं अपाचे कनेक्टर इस्तेमाल किया ऐसा करने के लिए:

अपाचे कनेक्टर निर्भरता परिभाषित जोड़ें:

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

ग्राहक

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

यह अपाचे कनेक्टर 2.17 के लिए काम नहीं करता है – Dejell

6

यदि आप जर्सी 2.0 डिफ़ॉल्ट http कनेक्टर का उपयोग करते हैं (जो जेडीके एचटीपी यूआरएल कनेक्शन है)।

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

http कनेक्टर (अपाचे HTTP क्लाइंट और ग्रिजली अतुल्यकालिक क्लाइंट) के अन्य कार्यान्वयन के लिए, मैं पहले प्रयास नहीं किया है: तुम बस सरल कॉन्फ़िगर प्रॉक्सी की तरह कर सकते थे। लेकिन मुझे लगता है कि आप http कनेक्टर द्वारा निर्देश का पालन कर सकते हैं।

+0

धन्यवाद मदद करने के लिए आशा है कि के लिये आपकी मदद, मुझे लगता है कि यह एकल वातावरण के लिए अच्छा समाधान होना चाहिए, लेकिन अगर मुझे अपने बिज़ क्लाइंट को अमूर्त करने की आवश्यकता है, और प्रॉक्सी सर्वर एक पैरामीटर है, तो क्या यह हर बार सेटिंग में काम नहीं करता है? क्या सिंक्रनाइज़ समस्या है? – feuyeux

+0

पैरामीटर को कॉन्फ़िगर करने के लिए आप एक प्रॉपर्टी फ़ाइल का उपयोग कर सकते हैं। या आप -Dhttp.proxyHost = "proxy_server" और -Dhttp.proxyPort = "proxy_port" – Lifecube

+1

रनटाइम पर अलग प्रॉक्सी सेट करने के लिए अच्छा समाधान नहीं कर सकते हैं। तदनुसार, मैं ऐसा करने के लिए अपाचे कनेक्टर का प्रयोग किया: org.glassfish.jersey.connectors जर्सी-अपाचे-कनेक्टर config.property (ApacheClientProperties.PROXY_URI, proxyUrl); कनेक्टर कनेक्टर = नया अपाचे कनेक्टर (कॉन्फ़िगर); कॉन्फ़िगरेशन।कनेक्टर (कनेक्टर); – feuyeux

13

धन्यवाद @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); 

दूसरों

0

यह समाधान मेरे लिए काम किया है

pom.xml

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

जावा

ClientConfig config = new ClientConfig(); 
config.property(ClientProperties.PROXY_URI, "http://_YOUR_URI_:_YOUR_PORT_"); 
config.connectorProvider(new ApacheConnectorProvider()); 
Client client = ClientBuilder.newClient(config); 

आशा में मदद करता है :)

संबंधित मुद्दे